home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / AGSPP221.ZIP / POWERPPL.221 / PPHLP.HLP (.txt) < prev    next >
Encoding:
Borland Turbo Vision Help  |  1996-01-18  |  191.3 KB  |  3,111 lines

  1. FBHF(
  2. THelpTopic
  3.   Power PPL 2.2 Help
  4.   PPL Language
  5.   PPL
  6. Reference
  7. Index
  8.   PowerPPL IDE
  9.   The
  10. Editor
  11.   The
  12. Calculator
  13.   The
  14. Calendar
  15.   The
  16. Ascii
  17. Table
  18.   The
  19. Message
  20. Window
  21. THelpTopic    
  22.   Compiler Options
  23. There are two options for the compiler : 
  24.  Array Dimension Checking
  25. This option allow the compiler to check for mistakes when using the statement REDIM. for example : =
  26.        DIM TABLE(5,5,5)
  27.        ...
  28.        REDIM TABLE,10,10
  29. This will generate an error unless Array Dimension Checking has been disabled. 
  30.  User Variable Generation
  31. This allow the PPE to generate the user variables when starting... disable this option if you don't want to have the work done... {
  32. Usually, there is no need to change anything here... both options may be checked unless you have reasons to changed that. 
  33. THelpTopic
  34.   The File Editor
  35. The File Editor allows you to edit your .PPS files... '
  36. here are the keys that you may press: 
  37.   Up         Move up one line
  38.   Down       Move down one line
  39.   Right      Move right one column
  40.   Left       Move left one column
  41.   PgUp       Move one page up
  42.   PgDn       Move one page down
  43.   Home       Move right most column of line
  44.   End        Move left most column of line
  45.   Ctrl-Right Move right one word
  46.   Ctrl-Left  Move left one word
  47.   Ctrl-PgUp  Move to top of text
  48.   Ctrl-PgDn  Move to bottom of text
  49. You can use blocks to move/delete/replace any block of text... simply hold the Shift key pressed and press: $
  50.   Up         Resize the block one line up
  51.   Down       Resize the block one line down
  52.   Right      Resize the block one column right
  53.   Left       Resize the block one column left
  54.   PgUp       Resize the block one page up
  55.   PgDn       Resize the block one page down
  56.   Home       Resize the block to right most column of line
  57.   End        Resize the block to left most column of line
  58.   Ctrl-Right Resize the block to next word
  59.   Ctrl-Left  Resize the block to previous word
  60.   Ctrl-PgUp  Resize the block to bottom of text
  61.   Ctrl-PgDn  Resize the block to end of text
  62.   Del        Delete the block (the block is lost, unless UNDO is pressed)
  63.   Shift-Del  Put the block in the current buffer and delete it
  64.   Shift-Ins  Fill the block with the current buffer
  65.   Ctrl-Ins   Put the block in the current buffer
  66. The File editor can be resized and moved using the Windows menu or the mouse. W
  67. It is possible to open many File Editors at a time, just open a file or create one... 
  68. THelpTopic
  69.   Calculator
  70. A calculator is very usefull when programming... you can have many calculators opened at a time, calculating different things... 
  71. The calculator is a simple four-function calculator with add, subtract, multiply, and divide.  To operate the calculator you can either use the keyboard or press the buttons on the calculator with the mouse.  The 'C' key clears the calculator, the '
  72. ' key will erases the last character typed, and the '
  73. ' key toggles the value from positive to negative (the keyboard equivalent of '
  74. ' is '_'). 
  75. THelpTopic
  76.   Message Window
  77. The Message Window is here to show you the result of the compilation procedure. Here are shown the line number of your errors or simply the confirmation of a perfect compilation, so you know you're the best PPL programmer all over the world <grin!> 
  78. THelpTopic
  79.   Calendar
  80. The calendar displays the current month, highlighting todays date. The next and previous months can be viewed using the '+' or '-' keys respectivly.  The mouse can also be used to change the month by pressing the 
  81.  icons. 
  82. THelpTopic
  83.   ASCII Table
  84. An Ascii table is REALLY usefull when programming... we never know what's the code of the '
  85. ' character for exemple... j
  86. The ASCII table displays the entire IBM PC character set.  The current character is marked by a blinking block cursor, and the hexadecimal and decimal ASCII values of the character are displayed below the chart. A new character is selected by pressing it on the keyboard, by clicking the mouse on it in the chart, or by moving the cursor using the cursor keys. 
  87. THelpTopic    
  88.   PCBoard Programming Language Reference Index
  89.    Functions, Statements & Reserved Words
  90.    @Xnn
  91.    Constants & Predefined Variables
  92.    Constants
  93.    Predifined
  94. Constants
  95.    Message
  96. Header
  97. Constants
  98.    Predifined
  99. Variables
  100.    Special Features
  101.    Accounting
  102. features
  103.    DBase
  104. features
  105.    Syntax & Compilation
  106.    PPL
  107. Source
  108. Syntax
  109.    Data
  110. Types
  111.    Expression
  112. Operators
  113.    @Xnn
  114. Color
  115. codes
  116.    Compiler
  117. Directives
  118.    Compiler
  119. Options
  120. THelpTopic
  121.   Functions & Statements - A
  122.   Abort
  123.   Abs
  124.   Account
  125.   ActMsgNum
  126.   AdjBytes
  127.   AdjDBytes
  128.   AdjTBytes
  129.   AdjTFiles
  130.   AdjTime
  131.   Alias
  132.   And
  133.   AnsiOn
  134.   AnsiPos
  135.   Append
  136.   Asc
  137. THelpTopic
  138.   Function & Statements - B
  139.   B2w
  140.   Backup
  141.   BitClear
  142.   BitSet
  143.   Blt
  144.   Break
  145.   Broadcast
  146.   Bye
  147. THelpTopic
  148.   Function & Statements - C
  149.   Call
  150.   CallID
  151.   CallNum
  152.   Carrier
  153.   CcType
  154.   CdCheckOff
  155.   CdCheckOn
  156.   CdOn
  157.   Chat
  158.   ChatStat
  159.   Chr
  160.   CloseCap
  161.   ClrEol
  162.   Cls
  163.   Color
  164.   ConfAlias
  165.   ConfExp
  166.   ConfFlag
  167.   ConfMw
  168.   ConfReg
  169.   ConfSel
  170.   ConfSys
  171.   ConfUnFlag
  172.   Continue
  173.   Copy
  174.   Crc32
  175.   CurColor
  176.   CurConf
  177.   CurSec
  178.   CurUser
  179. THelpTopic
  180.   Function & Statements - D
  181.   Date
  182.   Day
  183.   DbgLevel
  184.   Dec
  185.   Declare
  186.   DefAns
  187.   DefColor
  188.   Delay
  189.   Delete
  190.   DelUser
  191.   Dir
  192.   DispFile
  193.   DispStr
  194.   DispText
  195.   DNext
  196.   DoIntr
  197.   Dow
  198.   Download
  199.   DriveSpace
  200.   DtrOff
  201.   DtrOn
  202. THelpTopic
  203.   Function & Statements - E
  204.   End
  205.   ErrorCorrect
  206.   EvtTimeAdj
  207.   Exist
  208. THelpTopic
  209.   Function & Statements - F
  210.   FAppend
  211.   FClose
  212.   FCloseAll
  213.   FCreate
  214.   FDefIn
  215.   FDefOut
  216.   FDGet
  217.   FDPut
  218.   FDPutLn
  219.   FDPutPad
  220.   FDRead
  221.   FDWrite
  222.   Ferr
  223.   FFlush
  224.   FGet
  225.   FileInf
  226.   FindFirst
  227.   FindNext
  228.   Flag
  229.   FlagCnt
  230.   FmtCC
  231.   FmtReal
  232.   FNext
  233.   FOpen
  234.   ForNext
  235.   Forward
  236.   FPut
  237.   FPutLn
  238.   FPutPad
  239.   FRead
  240.   FReAltUser
  241.   FreshLine
  242.   FRewind
  243.   FSeek
  244.   Function
  245.   FWrite
  246. THelpTopic
  247.   Function & Statements - G
  248.   GetAltUser
  249.   GetEnv
  250.   GetToken
  251.   GetUser
  252.   GetX
  253.   GetY
  254.   Goodbye
  255.   GoSub
  256.   GoTo
  257.   GrafMode
  258. THelpTopic
  259.   Function & Statements - H
  260.   Hangup
  261.   HelpPath
  262.   HiConfNum
  263.   HiMsgNum
  264.   Hour
  265. THelpTopic
  266.   Function & Statements - I
  267.   I2s
  268.   IfThen
  269.   InBytes
  270.   Inc
  271.   Inkey
  272.   Input
  273.   InputCC
  274.   InputDate
  275.   InputInt
  276.   InputMoney
  277.   InputStr
  278.   InputText
  279.   InputTime
  280.   InputYN
  281.   Instr
  282.   IsBitSet
  283.   IsNonStop
  284. THelpTopic
  285.   Function & Statements - J
  286.   Join
  287. THelpTopic
  288.   Function & Statements - K
  289.   KbdBufSize
  290.   KbdChkOff
  291.   KbdChkOn
  292.   KbdFile
  293.   KbdFileUsed
  294.   KbdFlush
  295.   KbdString
  296.   KbdStuff
  297.   KeyFlush
  298.   KInkey
  299. THelpTopic
  300.   Function & Statements - L
  301.   Lang
  302.   LangExt
  303.   LastAns
  304.   LastIn
  305.   Left
  306.   Len
  307.   Let
  308.   Log
  309.   LoggedOn
  310.   LoMsgNum
  311.   Loop
  312.   Lower
  313.   Lprinted
  314.   Ltrim
  315. THelpTopic
  316.   Function & Statements - M
  317.   Mask_Alnum
  318.   Mask_Alpha
  319.   Mask_Ascii
  320.   Mask_File
  321.   Mask_Num
  322.   Mask_Path
  323.   Mask_Pwd
  324.   MaxNode
  325.   MdmFlush
  326.   MegaNum
  327.   Message
  328.   MGetByte
  329.   Mid
  330.   Min
  331.   MInkey
  332.   MinLeft
  333.   MinOn
  334.   Mixed
  335.   MkAddr
  336.   MkDate
  337.   Modem
  338.   Month
  339.   More
  340.   MouseReg
  341.   MPrint
  342.   MPrintLn
  343.   MsgToFile
  344. THelpTopic
  345.   Function & Statements - N
  346.   NewLine
  347.   NewLines
  348.   NoChar
  349.   Not
  350. THelpTopic
  351.   Function & Statements - O
  352.   OnLocal
  353.   OpenCap
  354.   Operators
  355.   OpText
  356.   OutBytes
  357. THelpTopic
  358.   Function & Statements - P
  359.   PageOff
  360.   PageOn
  361.   PageStat
  362.   PCBAccount
  363.   PcbAccStat
  364.   PcbDat
  365.   PcbMac
  366.   PcbNode
  367.   PeekB
  368.   PeekDW
  369.   PeekW
  370.   PokeB
  371.   PokeDW
  372.   PokeW
  373.   Pop
  374.   PPEName
  375.   PPEPath
  376.   PPLBufSize
  377.   PRFound
  378.   Print
  379.   PrintLn
  380.   Procedure
  381.   PromptStr
  382.   Psa
  383.   Push
  384.   PutAltUser
  385.   PutUser
  386. THelpTopic
  387.   Function & Statements - Q
  388.   Quest
  389.   Quit
  390.   QwkLimits
  391. THelpTopic
  392.   Function & Statements - R
  393.   Random
  394.   RdUnet
  395.   RdUsys
  396.   ReadLine
  397.   RecordUsage
  398.   ReDim
  399.   RegAh
  400.   RegAl
  401.   RegAx
  402.   RegBh
  403.   RegBl
  404.   RegBx
  405.   RegCf
  406.   RegCh
  407.   RegCl
  408.   RegCx
  409.   RegDh
  410.   RegDi
  411.   RegDl
  412.   RegDs
  413.   RegDx
  414.   RegEs
  415.   RegF
  416.   RegSi
  417.   Rename
  418.   Replace
  419.   ReplaceStr
  420.   ResetDisp
  421.   RestScrn
  422.   Return
  423.   Right
  424.   Rtrim
  425. THelpTopic
  426.   Function & Statements - S
  427.   S2i
  428.   SaveScrn
  429.   ScanMsgHdr
  430.   ScrFile
  431.   ScrText
  432.   SearchFind
  433.   SearchInit
  434.   SearchStop
  435.   Sec
  436.   Select
  437.   SendModem
  438.   SetEnv
  439.   SetLmr
  440.   Shell
  441.   ShowOff
  442.   ShowOn
  443.   ShowStat
  444.   SlPath
  445.   Sort
  446.   Sound
  447.   Space
  448.   SPrint
  449.   SPrintLn
  450.   StackAbort
  451.   StackErr
  452.   StackLeft
  453.   StartDisp
  454.   Stop
  455.   String
  456.   Strip
  457.   StripAtx
  458.   StripStr
  459.   Syntax
  460.   SysopSec
  461. THelpTopic
  462.   Function & Statements - T
  463.   TempPath
  464.   Time
  465.   TimeAP
  466.   ToDDate
  467.   TokCount
  468.   Tokenize
  469.   TokenStr
  470.   ToType
  471.   TPACGet
  472.   TPACPut
  473.   TPACRead
  474.   TPACWrite
  475.   TPAGet
  476.   TPAPut
  477.   TPARead
  478.   TPAWrite
  479.   Trim
  480. THelpTopic
  481.   Function & Statements - U
  482.   Un_City
  483.   Un_Name
  484.   Un_Oper
  485.   Un_Stat
  486.   Upper
  487.   UserAlias
  488.   U_Bdl
  489.   U_BdlDay
  490.   U_Bul
  491.   U_Fdl
  492.   U_Ful
  493.   U_InConf
  494.   U_LDate
  495.   U_LDir
  496.   U_Lmr
  497.   U_Logons
  498.   U_LTime
  499.   U_MsgRd
  500.   U_MsgWr
  501.   U_Name
  502.   U_PwdHist
  503.   U_PwdLc
  504.   U_PwdTc
  505.   U_RecNum
  506.   U_Stat
  507.   U_TimeOn
  508. THelpTopic
  509.   Function & Statements - V
  510.   ValCC
  511.   ValDate
  512.   ValTime
  513.   VarAddr
  514.   VarOff
  515.   VarSeg
  516.   Ver
  517. THelpTopic
  518.   Function & Statements - W
  519.   Wait
  520.   WaitFor
  521.   While
  522.   WrUnet
  523.   WrUsys
  524.   WrUsysDoor
  525. THelpTopic
  526.   Function & Statements - X
  527.   Xor
  528. THelpTopic
  529.   Function & Statements - Y
  530.   Year
  531.   YesChar
  532. THelpTopic
  533.   PPL SOURCE SYNTAX
  534. Each line of a PPL source file may contain none, one, some or all of the following sections: 5
  535. [KEYWORD ][EXPR|VAR][,EXPR|VAR][;|'][COMMENT TEXT] 9
  536. KEYWORD - A PPL statement used to accomplish some task. J
  537. EXPR    - A PPL expression which may contain VARs, CONSTs, and/or FUNCs. 9
  538. VAR     - A PPL variable with optional array subscript. 
  539. CONST   - A PPL constant. 0
  540. FUNC    - A PPL function that returns a value. >
  541. ;       - Used to start a comment.  Ignored by the compiler. >
  542. '       - Used to start a comment.  Ignored by the compiler. C
  543. *       - Used to start a comment if first character of the line. G
  544. COMMENT - Comment text following the ; or '. Ignored by the compiler. 
  545. if a line is blank or contains only a comment, it is skipped. if it contains a KEYWORD, that line is compiled into a tokenized format. If it doesn't contain a KEYWORD but some argument, it is assumed to be an assignement statement (LET). %
  546. A double quote ("") may be embedded within a string constant to tell the compiler that a single literal quote is desired In other words, "THIS""IS""A""TEST" would evaluate to THIS"IS"A"TEST after the leading and trailing quotes are removed and the double quotes were folded to single quotes. 
  547. Labels and variable names may now include the following characters in addition to A-Z, 0-9, and the _ (underscore) character: $ (dollar sign), @ (commercial at), # (pound sign), 
  548.  (cents), 
  549.  (british pound), 
  550.  (japanese yen) 
  551. A \ (backslash) character as the last character on a line (before any comments) will now allow continuing a logical line from one to the next physical line `
  552. A : (colon) character may be used to separate multiple logical lines on a single physical line 
  553. THelpTopic&
  554.   DATA TYPES
  555.         SYNTAX
  556. TYPE var[(dim[,dim[,dim]])][,var...] )
  557. PPL utilizes the following data types: 
  558.         BOOLEAN
  559. unsigned character (1 byte) 0 = FALSE, non-0 = TRUE 
  560.         DATE
  561. unsigned integer (2 bytes) PCBoard julian date (count of days since 1/1/1900) 
  562.         DDATE
  563. Signed long integer for julian date. DDATE is for use with DBase date fields. It holds a long integer for julian dates. When coerced to string type it is in the format CCYYMMDD or 19940527 !
  564.         INTEGER / SDWORD / LONG
  565. signed long integer (4 bytes) Range: -2,147,483,648 -> +2,147,483,647 
  566.         MONEY
  567. signed long integer (4 bytes) Range: -$21,474,836.48 -> +$21,474,836.47 
  568.         STRING
  569. far character pointer (4 bytes) NULL is an empty string non-NULL points to a string of some length less than or equal to 256 
  570.         TIME
  571. signed long integer (4 bytes) Count of seconds since midnight 
  572.         BIGSTR
  573. Allows up to 2048 characters per big string (up from 256 for STRING variables) May include CHR(0) characters in the middle of the big string (unlike STRING variables which may not) 
  574.         EDATE
  575. Julian date in earth date format Deals with dates formatted YYMM.DD Range:  Same as DATE 
  576.         REAL / FLOAT
  577. 4-byte floating point number Range:  +/-3.4E-38 - +/-3.4E+38 (7-digit precision) 
  578.         DREAL / DOUBLE
  579. 8-byte floating point number Range:  +/-1.7E-308 - +/-1.7E+308 (15-digit precision) $
  580.         UNSIGNED / DWORD / UDWORD
  581. 4-byte unsigned integer Range:  0 - 4,294,967,295 
  582.         BYTE / UBYTE
  583. 1-byte unsigned integer Range:  0 - 255 
  584.         WORD / UWORD
  585. 2-byte unsigned integer Range:  0 - 65,535 
  586.         SBYTE / SHORT
  587. 1-byte signed integer Range:  -128 - 127 
  588.         SWORD / INT
  589. 2-byte signed integer Range:  -32,768 - 32,767 
  590.         NOTES
  591.         
  592. Any type may be assigned to any other type.  This is the simplest way to accomplish type conversion. BOOLEAN, DATE, INTEGER, MONEY and TIME are all integer types and may be assigned to each other. Assignment from a larger data type to a smaller data type automatically converts the data to a format suitable for the smaller data type. Conversion to and from STRINGs is dependent on the other data type. DATEs are imported/exported as "MM-DD-YY". TIMEs are imported/exported as "HH:MM:SS".  MONEYs are imported/exported as "#.##" without embedded dollar signs or commas, and using as many characters as needed to the left of the decimal point. All variables must be declared before use. 
  593. THelpTopic
  594.   CONSTANTS
  595. PPL allows user defined constants in the following formats: 
  596.         $#.##
  597. A MONEY constant (dollar sign followed by optional dollars followed by decimal point followed by cents; # = 0-9) 
  598.         #h
  599. An INTEGER hexadecimal constant (# = 0-9 & A-F) 
  600.         #d
  601. An INTEGER decimal constant (# = 0-9) 
  602.         #o
  603. An INTEGER octal constant (# = 0-7) 
  604.         #b
  605. An INTEGER binary constant (# = 0-1) 
  606.         #
  607. An INTEGER constant (# = 0-9) 
  608.         "X"
  609. A STRING constant (X = any displayable text) 
  610.         @X##
  611. An INTEGER @X constant (# = 0-9 & A-F) 
  612. THelpTopicY
  613.   PREDEFINED CONSTANTS
  614. PPL predefines the following constants: 
  615.         AUTO = 2000h
  616. Parameter passed to INPUTSTR and PROMPTSTR statements (automatically press enter after 10 seconds of no user input) 
  617.         BELL = 800h
  618. Parameter passed to DISPTEXT statement (sound a bell when prompt displayed) 
  619.         CRC_FILE - CRC_STR
  620. These constants were added to avoid confusion when telling the function CRC32 what it is taking the CRC of. CRC_FILE tells CRC32 to calculate the CRC of the file contained within the string argument. CRC_STR tells CRC32 to calculate the CRC of the string argument itself. CRC_FILE has a value of 1 (TRUE) CRC_STR has a value of 0 (FALSE) 
  621.         CUR_USER = 0
  622. Parameter passed to CURUSER() 
  623.         DEFS = 0
  624. Parameter passed to various statements for default values 
  625.         ECHODOTS = 1h
  626. Parameter passed to INPUTSTR and PROMPTSTR statements (echo dots instead of user input) 
  627.         ERASELINE = 20h
  628. Parameter passed to INPUTSTR and PROMPTSTR statements (erase the current line when user presses enter) 
  629.         FALSE = 0
  630. BOOLEAN FALSE value 
  631.         FCL = 2
  632. Value passed to STARTDISP to force line counting display 
  633.         FIELDLEN = 2h
  634. Parameter passed to INPUTSTR and PROMPTSTR statements (displays parenthesis to show input field width if ANSI enabled) 
  635.         FNS = 1
  636. Value passed to STARTDISP to force non-stop display 
  637.         F_EXP = 2h
  638. Expired subscription access allowed flag for CONFFLAG and CONFUNFLAG 
  639.         F_MW = 10h
  640. Mail waiting flag for CONFFLAG and CONFUNFLAG 
  641.         F_REG = 1h
  642. Registered access allowed flag for CONFFLAG and CONFUNFLAG 
  643.         F_SEL = 4h
  644. Conference selected flag for CONFFLAG and CONFUNFLAG 
  645.         F_SYS = 8h
  646. Conference SysOp access flag for CONFFLAG and CONFUNFLAG 
  647.         GRAPH = 1h
  648. Parameter passed to DISPFILE statement to search for graphics specific files 
  649.         GUIDE = 4h
  650. Parameter passed to INPUTSTR and PROMPTSTR statements (displays parenthesis above current line if FIELDLEN used and ANSI not enabled) 
  651.         HIGHASCII = 1000h
  652. Parameter passed to INPUTSTR and PROMPTSTR statements (allow high ascii characters, regardless of current valid character set, if disable high ascii filter set to yes) 
  653.         LANG = 4h
  654. Parameter passed to DISPFILE statement to search for language specific files 
  655.         LFAFTER = 100h
  656. Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements (send an extra line feed after user presses enter) 
  657.         LFBEFORE = 80h
  658. Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements (send an extra line feed before prompt display) 
  659.         LOGIT = 8000h
  660. Parameter passed to DISPTEXT statement (log text to callers log) 
  661.         LOGITLEFT = 10000h
  662. Parameter passed to DISPTEXT statement (log text to callers log, forcing left justification) 
  663.         NC = 0
  664. Value passed to STARTDISP to not change display mode 
  665.         NEWLINE = 40h
  666. Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements (send a line feed after user presses enter) 
  667.         NOCLEAR = 400h
  668. Parameter passed to INPUTSTR and PROMPTSTR statements (don't clear field at first keypress regardless of ANSI) 
  669.         NO_USER = -1
  670. Parameter passed to CURUSER() 
  671.         O_RD = 0
  672. Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in read only mode 
  673.         O_RW = 2
  674. Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in read and write mode 
  675.         O_WR = 1
  676. Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in write only mode 
  677.         SEC = 2h
  678. Parameter passed to DISPFILE statement to search for security specific files 
  679.         STACKED = 10h
  680. Parameter passed to INPUTSTR and PROMPTSTR statements (allow semi-colons and spaces in addition to valid character set passed) 
  681.         S_DB = 3h
  682. Parameter passed to FCREATE/FOPEN/FAPPEND to deny read and write (both) access from other processes 
  683.         S_DN = 0h
  684. Parameter passed to FCREATE/FOPEN/FAPPEND to allow read and write (deny none) access from other processes 
  685.         S_DR = 1h
  686. Parameter passed to FCREATE/FOPEN/FAPPEND to deny read access from other processes 
  687.         S_DW = 2h
  688. Parameter passed to FCREATE/FOPEN/FAPPEND to deny write access from other processes 
  689.         TRUE = 1
  690. BOOLEAN TRUE value 
  691.         UPCASE = 8h
  692. Parameter passed to INPUTSTR and PROMPTSTR statements (force user input to upper case) 
  693.         WORDWRAP = 200h
  694. Parameter passed to INPUTSTR and PROMPTSTR statements (if user hits end of line, save the text at the end of the line for future use) 
  695.         YESNO = 4000h
  696. Parameter passed to INPUTSTR and PROMPTSTR statements (Only allow international yes/no responses) 
  697.         NO_USER = -1
  698. Return by GetUser - variables are currently undefined 
  699.         CUR_USER = 0
  700. Return by GetUser - User variables are for the current user "
  701.  See also : Predefined
  702. Variables
  703. THelpTopic5
  704.   PREDEFINED VARIABLES
  705. PPL predefines the following variables for user record access: 
  706.      BOOLEAN U_CLS
  707. Clear screen between messages status 
  708.      BOOLEAN U_DEF79
  709. 79 column message editor default 
  710.      BOOLEAN U_EXPERT
  711. Users current expert status 
  712.      BOOLEAN U_FSE
  713. Users full screen editor default 
  714.      BOOLEAN U_FSEP
  715. Prompt for full screen editor status 
  716.      BOOLEAN U_LONGHDR
  717. 6 line vs 4 line message header status 
  718.      BOOLEAN U_SCROLL
  719. Scroll multi-screen message status 
  720.      DATE U_EXPDATE
  721. The users subscription expiration date 
  722.      DATE U_PWDEXP
  723. The date that the users password expires and must be changed 
  724.      INTEGER U_EXPSEC
  725. The users expired security level 
  726.      INTEGER U_PAGELEN
  727. The users page length 
  728.      INTEGER U_SEC
  729. The users security level 
  730.      STK_LIMIT
  731. This constant was added so the PPL programmer could determine how close they are getting to the stack limit when using recursion. 
  732.      STRING U_ADDR(5)
  733. The users address information (if the SysOp has enabled address recording) 
  734.      Subscript 0 = First street line
  735.                1 = Second street line
  736.                2 = City
  737.                3 = State
  738.                4 = Zip
  739.                5 = Country
  740.      STRING U_ALIAS
  741. The users alias (if the SysOp has enabled alias use) 
  742.      STRING U_BDPHONE
  743. The users business/data phone number 
  744.      STRING U_CITY
  745. The users city/state information 
  746.      STRING U_CMNT1
  747. The users comment field 
  748.      STRING U_CMNT2
  749. The SysOps comment field 
  750.      STRING U_HVPHONE
  751. The users home/voice phone number 
  752.      STRING U_NOTES(4)
  753. Notes about the user (if the SysOp has enabled the note capability) $
  754.      Subscripts 0-4 hold lines 1-5
  755.      STRING U_PWD
  756. The users password 
  757.      STRING U_TRANS
  758. The users default transfer protocol 
  759.      STRING U_VER
  760. The users verification string (if the SysOp has enabled user verification) "
  761.  See also : Predefined
  762. Constants
  763. THelpTopic
  764.   EXPRESSION OPERATORS
  765. PPL allows the following operators to be used in expressions (lvalue and rvalue are simply the values to the left and right, respectively, of binary operators): Z
  766.      (  - Start sub-expression (also allows [ to be used)
  767.      )  - End sub-expression (also allows ] to be used)
  768.      ^  - Raise lvalue to the power of rvalue (also allows ** to be used)
  769.      *  - Multiply lvalue by rvalue
  770.      /  - Divide lvalue by rvalue
  771.      %  - Remainder of lvalue divided by rvalue
  772.      +  - Add rvalue to lvalue
  773.      -  - Subtract rvalue from lvalue
  774.      =  - Is lvalue equal to rvalue (also allows ==)
  775.      <> - Is lvalue not equal to rvalue (also allows != and ><)
  776.      <  - Is lvalue less than rvalue
  777.      <= - Is lvalue less than or equal to rvalue (also allows =<)
  778.      >  - Is lvalue greater than rvalue
  779.      >= - Is lvalue greater than or equal to rvalue (also allows =>)
  780.      !  - Logical not of rvalue
  781.      &  - Logical and of lvalue with rvalue (also allows &&)
  782.      |  - Logical or of lvalue with rvalue (also allows ||)
  783. THelpTopic
  784.   ABORT() :BOOLEAN
  785. Returns a flag indicating whether or not the user aborted the display of data via ^K/^X or answering no to a MORE? prompt 
  786. THelpTopic
  787.   ABS(var:integer) :INTEGER
  788. Returns the absolute value of "var" 
  789. THelpTopic
  790.   AND(var1:integer,var2:integer) :INTEGER
  791. Returns the bitwise and of two integer expressions 
  792.  See also : Or Xor Not
  793. THelpTopic
  794.   ANSION() :BOOLEAN
  795. Returns TRUE if the user has ANSI capabilities 
  796.  See also : OnLocal GrafMode
  797. THelpTopic
  798.   ASC(var:string) :INTEGER
  799. Returns the ASCII value (0-255) of the first character of "var" 
  800.  See also : Chr
  801. THelpTopic
  802.   B2W(var1:integer,var2:integer) :INTEGER
  803. Returns a word built from two byte sized values by the formula: 
  804.          (var1*0100h+var2)
  805. THelpTopic
  806.   CALLID() :STRING
  807. Returns the caller ID string 
  808. THelpTopic
  809.   CALLNUM() :INTEGER
  810. Returns the caller number of the current user. 
  811. THelpTopic
  812.   CARRIER() :INTEGER
  813. Returns the carrier speed as reported by the modem to PCBoard 
  814.  See also : ErrCorrect
  815. THelpTopic
  816.   CCTYPE(var:string) :STRING
  817. Returns the issuer of credit card number "var" !
  818.  See also : FmtCC InputCC ValCC
  819. THelpTopic
  820.   CDON() :BOOLEAN
  821. Returns TRUE if the carrier detect signal is on "
  822.  See also : CdCheckOn CdCheckOff
  823. THelpTopic
  824.   CHATSTAT() :BOOLEAN
  825. Return the current users chat availability status (TRUE means available, FALSE means unavailable). 
  826.  See also : PageStat
  827. THelpTopic
  828.   CHR(var:integer) :BIGSTR
  829. Returns a single character long string of the character represented by ASCII code "var" (0-255) 
  830.  See also : Asc
  831. THelpTopic
  832.   CONFREG(confNum:integer) :BOOLEAN
  833. Returns TRUE if users registered flag is set, FALSE otherwise u
  834.  See also : ConfSel  ConfSys ConfMw  CurConf   ConfExp CurConf
  835.            ConfFlag ConfUnFlag Join ConfAlias LastIn
  836. THelpTopic
  837.   CONFEXP(confNum:integer)
  838. Returns TRUE if users expired flag is set, FALSE otherwise 
  839. NOTE: h
  840. ConfReg() = FALSE & CONFEXP = TRUE, user locked out ConfReg() = TRUE  & CONFEXP = TRUE, user reg & exp 
  841.  See also : ConfSel  ConfSys    ConfMw CurConf   CurConf
  842.            ConfFlag ConfUnFlag Join   ConfAlias LastIn
  843.            ConfReg
  844. THelpTopic
  845.   CONFSEL(confNum:integer) :BOOLEAN
  846. Returns TRUE if user has selected the conference, FALSE otherwise 
  847.  See also : ConfSys  ConfMw     CurConf   ConfExp   CurConf
  848.            ConfFlag ConfUnFlag Join      ConfAlias LastIn
  849.            ConfReg
  850. THelpTopic
  851.   CONFSYS(confNum:integer) :BOOLEAN
  852. Returns TRUE if user has conference SysOp access, FALSE otherwise 
  853.  See also : ConfSel  ConfMw     CurConf   ConfExp   CurConf
  854.            ConfFlag ConfUnFlag Join      ConfAlias LastIn
  855.            ConfReg
  856. THelpTopic
  857.   CONFMW(confNum:integer) :BOOLEAN
  858. Returns TRUE if user has mail waiting in conference "confnum", FALSE otherwise 
  859.  See also : ConfSel  ConfSys    CurConf   ConfExp   CurConf
  860.            ConfFlag ConfUnFlag Join      ConfAlias LastIn
  861.            ConfReg
  862. THelpTopic
  863.   CURCOLOR() :INTEGER
  864. Returns the current color (0-255) in use by the ANSI driver 
  865.  See also : DefColor
  866. THelpTopic
  867.   CURCONF() :INTEGER
  868. Returns the current conference number 
  869.  See also : ConfSel  ConfSys ConfMw  ConfExp   CurConf
  870.            ConfFlag ConfUnFlag Join ConfAlias LastIn
  871.            ConfReg
  872. THelpTopic
  873.   CURSEC() :INTEGER
  874. Returns the users current security level 
  875.  See also : SysopSec
  876. THelpTopic
  877.   DATE() :DATE
  878. Returns todays date 
  879.  See also : Time
  880. THelpTopic
  881.   DAY(datevar:date) :INTEGER
  882. Returns the day of the month (1-31) of "datevar" 
  883.  See also : Month Year Dow
  884. THelpTopic
  885.   DBGLEVEL() :INTEGER
  886. Returns the debug level in effect /
  887.   DBGLEVEL dbg:integer
  888. Set the debug level to "dbg" 
  889. THelpTopic
  890.   DEFANS() :BIGSTR
  891. Returns the last default answer passed to an Input statement. For example, this allows a PPE to determine what the default answer would have been had a PCBTEXT prompt not been replaced with a PPE. 
  892.  See also : LastAns
  893. THelpTopic
  894.   DEFCOLOR() :INTEGER
  895. Returns the default color as specified in PCBSetup 
  896.   DEFCOLOR
  897. Resets the current color to the system default 
  898.  See also : CurColor
  899. THelpTopic
  900.   DOW(day:date) :INTEGER
  901. Returns the day of the week (0 = Sunday, 6 = Saturday) that "day" fell on 
  902.  See also : Date Month Year
  903. THelpTopic
  904.   ERRCORRECT() :BOOLEAN
  905. Returns TRUE if a session is determined to be error corrected (or FALSE for non-error corrected sessions). 
  906.  See also : Carrier
  907. THelpTopic
  908.   EVTTIMEADJ() :BOOLEAN
  909. Detects if the users time has been adjusted for an upcoming event. This is useful to detect if a users time left can be increased with the AdjTime statement. 
  910.  See also : AdjTime
  911. THelpTopic
  912.   EXIST(file:string) :BOOLEAN
  913. Returns a boolean TRUE value if the file "file" exists /
  914.  See also : Delete Copy Append FileInf Rename
  915. THelpTopic
  916.   FERR(channel:integer) :BOOLEAN
  917. Returns TRUE if a file access error occurred on channel "channel" since the file was opened or FERR was last called 
  918.  See also : FOpen
  919. THelpTopic
  920.   FILEINF(file:string,option:integer) :MULTITYPE
  921. Returns a piece of information (specified by "option") about the file "file" 
  922.  Valid values for "options": 1 = Return TRUE if file exists
  923.                              2 = Return file date stamp
  924.                              3 = Return file time stamp
  925.                              4 = Return file size
  926.                              5 = Return file attributes
  927.                                    01h = Read Only
  928.                                    02h = Hidden
  929.                                    04h = System
  930.                                    20h = Archive
  931.                              6 = Return file drive
  932.                              7 = Return file path
  933.                              8 = Return file base name
  934.                              9 = Return file extension
  935. Return value type is depending on the info requested. It may be BOOLEAN, DATE, INTEGER, STRING and TIME -
  936.  See also : Delete Copy Append Exist Rename
  937. THelpTopic
  938.   FMTCC(format:strinf) :STRING
  939. Returns a formatted credit card number based on "format"  
  940.  See also CcType ValCC InputCC
  941. THelpTopic
  942.   FMTREAL(realExp:real/dreal,fieldWidth:integer,decimalPlaces:integer)
  943. Formats REAL/DREAL values for display purposes. 
  944.        realExp       = A REAL/DREAL floating point expression
  945.        fieldWidth    = The minimum number of characters to display
  946.        decimalPlaces = The number of characters to display to the right of
  947.                        the decimal point
  948. THelpTopic
  949.   GETENV(var:string) :STRING
  950. Returns the value of the environment variable named by "var" 
  951. THelpTopic
  952.   GETTOKEN() :STRING
  953. Returns the next string token from a prior call to Tokenize (Same as the GETTOKEN statement but can be used in an expression without prior assignement to a variable) s
  954.   GETTOKEN VAR
  955.          Get a token from a previous call to Tokenize and assign
  956.          it to VAR
  957.  See also : Tokenize TokenStr TokCount
  958. THelpTopic
  959.   GETX() :INTEGER
  960. Returns the current column (X position) of the cursor on the display 
  961.  See also : GetY AnsiPos
  962. THelpTopic
  963.   GETY() :INTEGER
  964. Returns the current row (Y position) of the cursor on the display 
  965.  See also : GetX AnsiPos
  966. THelpTopic
  967.   GRAFMODE() :STRING
  968. Returns a character indicating the users graphics status 
  969.         R = RIPscrip supported
  970.         G = ANSI graphics (color and positioning) supported
  971.         A = ANSI positioning (no color) supported
  972.         N = No graphics (RIP or ANSI) supported
  973.  See also : AnsiOn OnLocal
  974. THelpTopic
  975.   HELPPATH() :STRING
  976. Returns the path, as specified in PCBSetup, to the help files %
  977.  See also : PPEPath SlPath TempPath
  978. THelpTopic
  979.   HIMSGNUM() :INTEGER
  980. Returns the high message number for the current conference. 
  981.  See also : LoMsgNum
  982. THelpTopic
  983.   HOUR(dayhour:time) :INTEGER
  984. Returns the hour of the day (0-23) of "dayhour" 
  985.  See also : Min Sec
  986. THelpTopic
  987.   I2S(var1:integer,var2:integer) :STRING
  988. Returns a string representing the integer value "var1" converted to base "var2" 
  989.  See also : S2i String
  990. THelpTopic
  991.   INKEY() :STRING
  992. Returns the next keypress as a single character long string, or a string with the name of the function or cursor control key $
  993.  See also : KInkey MGetByte MInkey
  994. THelpTopic
  995.   INSTR(var1:bigstr,var2:bigstr) :INTEGER
  996. Returns the position of "var2" in "var1" (1-LEN(var1)) or 0 if "var2" not in "var1" 
  997. THelpTopic
  998.   ISBITSET(var:multitype, bit:integer) :BOOLEAN
  999. Check the status of a specified bit in a variable. 
  1000.    This function is primarily intended to be used with BIGSTR variables
  1001.    which can be up to 2048 bytes long.  However, it will work with other
  1002.    data types (and expressions) as well if desired.
  1003.  See also : BitSet BitClear
  1004. THelpTopic
  1005.   ISNONSTOP() :BOOLEAN
  1006. Return whether or not the display is currently in non-stop mode ( ie, did the user type NS as part of their command line) 
  1007.  See also : StartDisp
  1008. THelpTopic
  1009.   KBDBUFSIZE() :INTEGER
  1010. Return the number of key presses pending in the KbdString buffer p
  1011.  See also : PPLBufSize  KbdFlush KbdStuff KbdFile  KbdString
  1012.            KbdFileUsed MdmFlush KeyFlush KbdFlush
  1013. THelpTopic
  1014.   KBDFILEUSED() :BOOLEAN
  1015. Return TRUE if key presses are being stuffed via a KbdFile statement. s
  1016.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  1017.            MdmFlush    KeyFlush   KbdFlush KbdString
  1018. THelpTopic
  1019.   KINKEY() :STRING
  1020. Returns the next keypress from the BBS keyboard as a single character long string, or a string with the name of the function or cursor control key #
  1021.  See also : Inkey MInkey MGetByte
  1022. THelpTopic
  1023.   LANGEXT() :STRING
  1024. Returns the file extension for the users language selection 
  1025.  See also : Lang
  1026. THelpTopic
  1027.   LASTANS() :STRING
  1028. function to return the last answer accepted by an Input statement. 
  1029.  See also : DefAns
  1030. THelpTopic
  1031.   LEFT(var1:string,var2:integer) :BIGSTR
  1032. Returns the left-most "var2" characters of "var1" 
  1033.  See also : Right Mid
  1034. THelpTopic
  1035.   LEN(var:bigstr) :INTEGER
  1036. Returns the length of "var" 
  1037. THelpTopic
  1038.   LOGGEDON() :BOOLEAN
  1039. Returns TRUE if the user has already logged on to the BBS, FALSE otherwise 
  1040. THelpTopic
  1041.   LOMSGNUM() :INTEGER
  1042. Returns the low message number for the current conference. 
  1043.  See also : HiMsgNum
  1044. THelpTopic
  1045.   LOWER(var:bigstr) :BIGSTR
  1046. Returns a string of "var" with all uppercase characters converted to lowercase characters 
  1047.  See also : Upper Mixed
  1048. THelpTopic
  1049.   LPRINTED() :INTEGER
  1050. Return the number of lines printed on the display 
  1051.  See also : StartDisp
  1052. THelpTopic
  1053.   LTRIM(var1:bigstr,var2:string) :BIGSTR
  1054. Returns a string of "var1" with the first character of "var2" trimmed from the left 
  1055.  See also : Rtrim Trim
  1056. THelpTopic
  1057.   MASK_ALNUM() :STRING
  1058. Returns a valid character mask for input statements of A through Z, a through z, and 0 through 9 I
  1059.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Num Mask_Path Mask_Pwd
  1060. THelpTopic
  1061.   MASK_ALPHA() :STRING
  1062. Returns a valid character mask for input statements of A through Z and a through z I
  1063.  See also : Mask_Alnum Mask_Ascii Mask_File Mask_Num Mask_Path Mask_Pwd
  1064. THelpTopic
  1065.   MASK_ASCII() :STRING
  1066. Returns a valid character mask for input statements of space (" ") through tilde ("~") I
  1067.  See also : Mask_Alpha Mask_Alnum Mask_File Mask_Num Mask_Path Mask_Pwd
  1068. THelpTopic
  1069.   MASK_FILE() :STRING
  1070. Returns a valid character mask for input statements of file names J
  1071.  See also : Mask_Alpha Mask_Ascii Mask_Alnum Mask_Num Mask_Path Mask_Pwd
  1072. THelpTopic
  1073.   MASK_NUM() :STRING
  1074. Returns a valid character mask for input statements of 0 through 9 K
  1075.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Alnum Mask_Path Mask_Pwd
  1076. THelpTopic
  1077.   MASK_PATH() :STRING
  1078. Returns a valid character mask for input statements of path names J
  1079.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Num Mask_Alnum Mask_Pwd
  1080. THelpTopic
  1081.   MASK_PWD() :STRING
  1082. Returns a valid character mask for input statements of passwords K
  1083.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Num Mask_Path Mask_Alnum
  1084. THelpTopic
  1085.   MAXNODE() :INTEGER
  1086. Returns the maximum node possible with the current software (ie, /2 would return 2, /10 would return 10, etc) 
  1087.  See also : PcbNode
  1088. THelpTopic
  1089.   MEGANUM(number:integer)
  1090. Converts a decimal number (from 0 to 1295) to a hexa-tri-decimal number, or meganum. 
  1091. THelpTopic
  1092.   MGETBYTE() :INTEGER
  1093. Returns the value of the next byte from the modem (0-255) or -1 if there are no bytes waiting for input !
  1094.  See also : Inkey KInkey MInkey
  1095. THelpTopic
  1096.   MID(var1:bigstr,var2:integer,var3:integer) :BIGSTR
  1097. Returns a string from "var1" starting at the "var2" position of "var1" and containing "var3" characters of "var1" 
  1098.  See also : Right Left
  1099. THelpTopic
  1100.   MIN(var1:time) :INTEGER
  1101. Returns the minute of the hour (0-59) of "var1" 
  1102.  See also : Hour Sec
  1103. THelpTopic
  1104.   MINKEY() :STRING
  1105. Returns the next keypress from the remote caller as a single character long string, or a string with the name of the function or cursor control key #
  1106.  See also : Inkey KInkey MGetByte
  1107. THelpTopic
  1108.   MINLEFT() :INTEGER
  1109. Returns the current callers minutes left to use online 
  1110.  See also : MinOn
  1111. THelpTopic
  1112.   MINON() :INTEGER
  1113. Returns the current callers minutes online so far this session 
  1114.  See also : MinLeft
  1115. THelpTopic
  1116.   MIXED(var1:string)
  1117. Converts a string to mixed (or proper name) case 
  1118.  See also : Upper Lower
  1119. THelpTopic
  1120.   MKADDR(seg:integer, off:integer) :INTEGER
  1121. Returns a segment:offset address as a long integer built from two word sized values by the formula: (var1*00010000h+var2) #
  1122.  See also : VarSeg VarOff VarAddr
  1123. THelpTopic
  1124.   MKDATE(year:integer, month:integer, day:integer) :DATE
  1125. Returns a date with the year specified by "year" (1900-2079), month specified by "month" (1-12), and day specified by "day" (1-31). 
  1126.  See also : Year Month Day
  1127. THelpTopic
  1128.   MODEM() :STRING
  1129. Returns the modem connect string as reported by the modem to PCBoard 
  1130.  See also : Carrier
  1131. THelpTopic
  1132.   MONTH(var1:date) :INTEGER
  1133. Returns the month of the year (1-12) of "var1" 
  1134.  See also : Year Day Dow
  1135. THelpTopic
  1136.   NOCHAR() :STRING
  1137. Returns the current language no character 
  1138.  See also : YesChar
  1139. THelpTopic
  1140.   NOT(var1:integer) :INTEGER
  1141. Returns the bitwise complement (all bits inverted) of an integer expression 
  1142.  See also : Or And Xor
  1143. THelpTopic
  1144.   ONLOCAL() :BOOLEAN
  1145. Returns TRUE if the user is on locally 
  1146.  See also : AnsiOn GrafMode
  1147. THelpTopic
  1148.   OR(var1:integer, var2:integer) :INTEGER
  1149. Returns the bitwise or of two integer expressions 
  1150.  See also Xor And Not
  1151. THelpTopic
  1152.   PAGESTAT() :BOOLEAN
  1153. Returns TRUE if the user has paged the SysOp (or PageOn has been issued), FALSE otherwise (or PageOff has been issued) 
  1154.  See also : ChatStat
  1155. THelpTopic
  1156.   PCBDAT() :STRING
  1157. Returns a string with the path and file name of PCBOARD.DAT 
  1158. THelpTopic
  1159.   PCBNODE() :INTEGER
  1160. Returns the node number 
  1161.  See also : MaxNode
  1162. THelpTopic
  1163.   PEEKB(var:integer) :INTEGER
  1164. Returns a byte value (0-255) located at memory address "var" (PEEK is a synonym) -
  1165.  See also : PeekDW PeekW PokeB PokeW PokeDW
  1166. THelpTopic
  1167.   PEEKDW(var:integer) :INTEGER
  1168. Returns a signed integer value (-2147483648 - +2147483647) located at memory address "var" ,
  1169.  See also : PeekB PeekW PokeB PokeW PokeDW
  1170. THelpTopic
  1171.   PEEKW(var:integer) :INTEGER
  1172. Returns a word value (0-65535) located at memory address "var" -
  1173.  See also : PeekDW PeekB PokeB PokeW PokeDW
  1174. THelpTopic
  1175.   PPENAME() :STRING
  1176. Returns the name of the currently executing PPE file minus the path and extension 
  1177.  See also : PPEPath
  1178. THelpTopic
  1179.   PPEPATH() :STRING
  1180. Returns a string with the path (no file name) of the currently executing PPE file 
  1181.  See also : PPEName
  1182. THelpTopic
  1183.   PPLBUFSIZE() :INTEGER
  1184. Returns the number of key presses pending in the KbdStuff buffer. o
  1185.  See also : KbdBufSize  KbdFlush KbdStuff KbdFile KbdString
  1186.            KbdFileUsed MdmFlush KeyFlush KbdFlush
  1187. THelpTopic
  1188.   PSA(var:integer) :BOOLEAN
  1189. Returns TRUE if the feature specified by "var" is enabled, FALSE if the feature specified by "var" is disabled n
  1190.          Valid values for var:   1 = Alias Support Enabled
  1191.                                  2 = Verify Support Enabled
  1192.                                  3 = Address Support Enabled
  1193.                                  4 = Password Support Enabled
  1194.                                  5 = Statistics Support Enabled
  1195.                                  6 = Notes Support Enabled
  1196.  See also : TPAGet
  1197. THelpTopic
  1198.   RANDOM(var:integer) :INTEGER
  1199. Returns a random number between 0 and "var" inclusive 
  1200. THelpTopic
  1201.   READLINE(file:string, line:integer) :STRING
  1202. Read and return line number "line" from file "file" 
  1203. THelpTopic
  1204.   REGAH() :INTEGER
  1205. Returns the value of the AH register after a DoIntr statement +
  1206.  See also : RegAl RegAx
  1207.            DoIntr
  1208. THelpTopic
  1209.   REGAL() :INTEGER
  1210. Returns the value of the AL register after a DoIntr statement +
  1211.  See also : RegAh RegAx
  1212.            DoIntr
  1213. THelpTopic
  1214.   REGAX() :INTEGER
  1215. Returns the value of the AX register after a DoIntr statement +
  1216.  See also : RegAh RegAl
  1217.            DoIntr
  1218. THelpTopic
  1219.   REGBH() :INTEGER
  1220. Returns the value of the BH register after a DoIntr statement +
  1221.  See also : RegBl RegBx
  1222.            DoIntr
  1223. THelpTopic
  1224.   REGBL() :INTEGER
  1225. Returns the value of the BL register after a DoIntr statement +
  1226.  See also : RegBh RegBx
  1227.            DoIntr
  1228. THelpTopic
  1229.   REGBX() :INTEGER
  1230. Returns the value of the BX register after a DoIntr statement +
  1231.  See also : RegBh RegBl
  1232.            DoIntr
  1233. THelpTopic
  1234.   REGCF() :BOOLEAN
  1235. Returns the state of the carry flag after a DoIntr statement $
  1236.  See also : RegF
  1237.            DoIntr
  1238. THelpTopic
  1239.   REGCH() :INTEGER
  1240. Returns the value of the CH register after a DoIntr statement +
  1241.  See also : RegCl RegCx
  1242.            DoIntr
  1243. THelpTopic
  1244.   REGCL() :INTEGER
  1245. Returns the value of the CL register after a DoIntr statement +
  1246.  See also : RegCh RegCx
  1247.            DoIntr
  1248. THelpTopic
  1249.   REGCX() :INTEGER
  1250. Returns the value of the CX register after a DoIntr statement +
  1251.  See also : RegCh RegCl
  1252.            DoIntr
  1253. THelpTopic
  1254.   REGDH() :INTEGER
  1255. Returns the value of the DH register after a DoIntr statement +
  1256.  See also : RegDl RegDx
  1257.            DoIntr
  1258. THelpTopic
  1259.  See also : DoIntr
  1260.   REGDI() :INTEGER
  1261. Returns the value of the DI register after a DoIntr statement 
  1262.  See also : DoIntr
  1263. THelpTopic
  1264.   REGDL() :INTEGER
  1265. Returns the value of the DL register after a DoIntr statement +
  1266.  See also : RegDh RegDx
  1267.            DoIntr
  1268. THelpTopic
  1269.   REGDS() :INTEGER
  1270. Returns the value of the DS register after a DoIntr statement 
  1271.  See also : DoIntr
  1272. THelpTopic
  1273.   REGDX() :INTEGER
  1274. Returns the value of the DX register after a DoIntr statement +
  1275.  See also : RegDh RegDl
  1276.            DoIntr
  1277. THelpTopic
  1278.   REGES() :INTEGER
  1279. Returns the value of the ES register after a DoIntr statement 
  1280.  See also : DoIntr
  1281. THelpTopic
  1282.   REGF() :INTEGER
  1283. Returns the value of the flags register after a DoIntr statement 
  1284. Seea also : RegCf 
  1285.             DoIntr
  1286. THelpTopic
  1287.   REGSI() :INTEGER
  1288. Returns the value of the SI register after a DoIntr statement 
  1289.  See also : DoIntr
  1290. THelpTopic
  1291.   REPLACE(str:bigstr, search:string, replace:string) :BIGSTR
  1292. Returns a string of "str" with all occurences of the first character of "search" replaced by the first character of "replace" 
  1293.  See also : ReplaceStr
  1294. THelpTopic
  1295.   REPLACESTR(str:bigstr, search:string, replace:string) :BIGSTR
  1296. It functions just like the Replace function except that a complete sub-string may be specified for both search and replace q
  1297.  str is the string to work on
  1298.  search is the string to search for
  1299.  replace is the string to replace search with
  1300.  See also : Replace
  1301. THelpTopic
  1302.   RIGHT(str:bigstr, len:integer) :BIGSTR
  1303. Returns the right-most "len" characters of "str" 
  1304.  See also : Left
  1305. THelpTopic
  1306.   RTRIM(str1:bigstr, trim:string) :BIGSTR
  1307. Returns a string of "str1" with the first character of "trim" trimmed from the right 
  1308.  See also : Ltrim
  1309. THelpTopic
  1310.   S2I(str:string, base:integer) :INTEGER
  1311. Returns an integer representing the string "str" converted from base "base" 
  1312.  See also : I2s
  1313. THelpTopic
  1314.   SCRTEXT(col:integer, row:integer, len:integer, code:boolean) :STRING
  1315. Returns a string with the text (and color information in the form of @X codes if "code" is TRUE) from column "col", row "row", and of length "len" 
  1316.  See also : ScrFile
  1317. THelpTopic
  1318.   SEC(var:time) :INTEGER
  1319. Returns the second of the minute (0-59) of "var" 
  1320.  See also : Hour Min
  1321. THelpTopic
  1322.   SHOWSTAT() :BOOLEAN
  1323. Returns TRUE if writing to the display is active, FALSE if writing to the display is disabled 
  1324.  See also : ShowOff ShowOn
  1325. THelpTopic
  1326.   SLPATH() :STRING
  1327. Returns the path, as specified in PCBSetup, to the login security files '
  1328.  See also : HelpPath PPEPath TempPath
  1329. THelpTopic
  1330.   SPACE(len:integer) :BIGSTR
  1331. Returns a string of spaces "len" characters long 
  1332. THelpTopic
  1333.   STRING(var:multitype) :STRING
  1334. Returns "var" converted to a string 
  1335.  See also : I2s
  1336. THelpTopic
  1337.   STRIP(str:bigstr, char:string) :BIGSTR
  1338. Returns a string of "str" with all occurrences of the first character of "char" removed 
  1339.  See also : StripAtx StripStr
  1340. THelpTopic
  1341.   STRIPATX(str:bigstr) :BIGSTR
  1342. Returns a string of "str" with all @X codes removed 
  1343.  See also : Strip StripStr
  1344. THelpTopic
  1345.   STRIPSTR(str:bigstr, search:string) :BIGSTR
  1346. Functions just like the Strip function except that a complete sub-string may be specified for search C
  1347.  str is the string to work on
  1348.  search is the string to search for
  1349.  See also : Strip StripAtx
  1350. THelpTopic
  1351.   SYSOPSEC() :INTEGER
  1352. Returns the SysOp security defined in PCBOARD.DAT 
  1353.  See also : CurSec
  1354. THelpTopic
  1355.   TEMPPATH() :STRING
  1356. Returns the path, as specified in PCBSetup, to the temporary work directory %
  1357.  See also : SlPath HelpPath PPEPath
  1358. THelpTopic
  1359.    TIME() :TIME
  1360. Returns the current time 
  1361.  See also : TimeAP Date
  1362. THelpTopic
  1363.   TIMEAP(var:time) :STRING
  1364. Returns a string representing the time "var" in civilian format (XX:XX:XX AM) 
  1365.  See also : Time
  1366. THelpTopic
  1367.   TOKCOUNT() :INTEGER
  1368. Returns the number of tokens available via the GetToken statement and/or function (
  1369.  See also : Tokenize GetToken TokenStr
  1370. THelpTopic
  1371.   TOKENSTR() :STRING
  1372. Returns a previously tokenized string reconstructed with semi-colons separating the component tokens (
  1373.  See also : Tokenize GetToken TokCount
  1374. THelpTopic
  1375.   TOtype(exp)
  1376. TOBOOLEAN, TOMONEY, TOSTRING, TOBIGSTR, TOINTEGER, TOUNSIGNED, TOREAL, TODREAL, TOFLOAT, TODOUBLE, TODATE, TOEDATE, TOTIME, TOBYTE, TOWORD, TODWORD, TOUBYTE, TOUWORD, TOUDWORD, TOSBYTE, TOSWORD, TOSDWORD, TOSHORT, TOINT, & TOLONG >
  1377. Used to force the result of an expression to a specific type )
  1378.      Usage:  TOtype(exp) (returns type)
  1379.              type is the actual type to force (BIGSTR, BOOLEAN, etc.)
  1380.              exp is an expression of any type
  1381.  See also : S2i I2s String
  1382. THelpTopic
  1383.   TRIM(str:bigstr, char:string) :BIGSTR
  1384. Returns a string of "str" with the first character of "char" trimmed from both ends 
  1385.  See also : Rtrim Ltrim
  1386. THelpTopic
  1387.   UPPER(str:bigstr) :BIGSTR
  1388. Returns a string of "str" with all lowercase characters converted to uppercase characters 
  1389.  See also : Lower Mixed
  1390. THelpTopic
  1391.   UN_CITY() :STRING
  1392. Returns a nodes city from USERNET.XXX after a RdUnet statement %
  1393.  See also : Un_Name Un_Oper Un_Stat
  1394. THelpTopic
  1395.   UN_NAME() :STRING
  1396. Returns a nodes user name from USERNET.XXX after a RdUnet statement %
  1397.  See also : Un_City Un_Oper Un_Stat
  1398. THelpTopic
  1399.   UN_OPER() :STRING
  1400. Returns a nodes operation text from USERNET.XXX after a RdUnet statement %
  1401.  See also : Un_City Un_Name Un_Stat
  1402. THelpTopic
  1403.   UN_STAT() :STRING
  1404. Returns a nodes status from USERNET.XXX after a RdUnet statement %
  1405.  See also : Un_City Un_Name Un_Oper
  1406. THelpTopic
  1407.   U_BDL() :INTEGER
  1408. Returns the current users number of bytes downloaded 
  1409.  See also : U_BdlDay  U_Bul    U_Fdl     U_Ful    U_InConf
  1410.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1411.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1412.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1413. THelpTopic
  1414.   U_BDLDAY() :INTEGER
  1415. Returns the current users number of bytes downloaded today 
  1416.  See also : U_Bdl     U_Bul    U_Fdl     U_Ful    U_InConf
  1417.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1418.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1419.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1420. THelpTopic
  1421.   U_BUL() :INTEGER
  1422. Returns the current users number of bytes uploaded 
  1423.  See also : U_Bdl     U_BdlDay U_Fdl     U_Ful    U_InConf
  1424.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1425.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1426.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1427. THelpTopic
  1428.   U_FDL() :INTEGER
  1429. Returns the current users number of files downloaded 
  1430.  See also : U_Bdl     U_BdlDay U_Bul     U_Ful    U_InConf
  1431.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1432.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1433.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1434. THelpTopic
  1435.   U_FUL() :INTEGER
  1436. Returns the current users number of files uploaded 
  1437.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_InConf
  1438.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1439.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1440.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1441. THelpTopic
  1442.   U_INCONF(record:integer, conf:integer) :BOOLEAN
  1443. Returns TRUE if user record number "record" is registered in conference "conf" 
  1444.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1445.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1446.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1447.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1448. THelpTopic
  1449.   U_LDATE() :DATE
  1450. Returns the current users last date on the system 
  1451.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1452.            U_InConf  U_LDir   U_Lmr     U_Logons U_LTime
  1453.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1454.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1455. THelpTopic
  1456.   U_LDIR() :DATE
  1457. Returns the current users last directory scan date 
  1458.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1459.            U_InConf  U_LDate  U_Lmr     U_Logons U_LTime
  1460.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1461.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1462. THelpTopic
  1463.   U_LMR(confNum:integer) :INTEGER
  1464. function to return the number of the last message read for the specified conference. 
  1465.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1466.            U_InConf  U_LDate  U_LDir    U_Logons U_LTime
  1467.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1468.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1469. THelpTopic
  1470.   U_LOGONS() :INTEGER
  1471. Returns the current users number of times logged on 
  1472.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1473.            U_InConf  U_LDate  U_LDir    U_Lmr    U_LTime
  1474.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1475.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1476. THelpTopic
  1477.   U_LTIME() :TIME
  1478. Returns the current users last time on the system 
  1479.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1480.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1481.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1482.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1483. THelpTopic
  1484.   U_MSGRD() :INTEGER
  1485. Returns the number of messages the user has read 
  1486.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1487.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1488.            U_LTime   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1489.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1490. THelpTopic
  1491.   U_MSGWR() :INTEGER
  1492. Returns the number of messages the user has written 
  1493.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1494.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1495.            U_LTime   U_MsgRd  U_Name    U_PwdHistU_PwdLc
  1496.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1497. THelpTopic
  1498.   U_NAME() :STRING
  1499. Returns the current users name 
  1500.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1501.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1502.            U_LTime   U_MsgRd  U_MsgWr   U_PwdHistU_PwdLc
  1503.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1504. THelpTopic
  1505.   U_PWDHIST(hist:integer) :STRING
  1506. Returns the specified password from the password history Valid values for "hist" are 1 through 3 
  1507.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1508.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1509.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdLc
  1510.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1511. THelpTopic
  1512.   U_PWDLC() :DATE
  1513. Returns the date of the last password change 
  1514.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1515.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1516.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1517.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1518. THelpTopic
  1519.   U_PWDTC() :INTEGER
  1520. Returns the number of times the password has been changed 
  1521.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1522.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1523.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1524.            U_PwdLc   U_RecNum U_Stat    U_TimeOn
  1525. THelpTopic
  1526.   U_RECNUM(user:string) :INTEGER
  1527. Returns the user record number (0-65535) for user name "user" or -1 if "user" is not registered on this system. 
  1528.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1529.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1530.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1531.            U_PwdLc   U_PwdTc  U_Stat    U_TimeOn
  1532. THelpTopic
  1533.   U_STAT(option:integer) :DATE or :INTEGER
  1534. Returns a statistic about the user that is tracked by PCBoard 5
  1535.          Valid values for "option" are 1 through 15
  1536.             1 - Returns the first date the user called the system
  1537.             2 - Returns the number of SysOp pages the user has requested
  1538.             3 - Returns the number of group chats the user has
  1539.                 participated in
  1540.             4 - Returns the number of comments the user has left
  1541.             5 - Returns the number of 300 bps connects
  1542.             6 - Returns the number of 1200 bps connects
  1543.             7 - Returns the bumber of 2400 bps connects
  1544.             8 - Returns the number of 9600 bps connects
  1545.             9 - Returns the number of 14400 bps connects
  1546.            10 - Returns the number of security violations
  1547.            11 - Returns the number of "not registered in conference"
  1548.                 warnings
  1549.            12 - Returns the number of times the users download limit
  1550.                 has been reached
  1551.            13 - Returns the number of "file not found" warnings
  1552.            14 - Returns the number of password errors the user has had
  1553.            15 - Returns the number of verify errors the user has had
  1554.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1555.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1556.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1557.            U_PwdLc   U_PwdTc  U_RecNum  U_TimeOn
  1558. THelpTopic
  1559.   U_TIMEON() :INTEGER
  1560. Returns the current users time online today in minutes 
  1561.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1562.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1563.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1564.            U_PwdLc   U_PwdTc  U_RecNum  U_Stat
  1565. THelpTopic
  1566.   VALCC(CCnum:string) :BOOLEAN
  1567. Returns TRUE if "CCnum" is a valid credit card number "
  1568.  See also : ValCC InputCC CcType
  1569. THelpTopic
  1570.   VALDATE(date:string) :BOOLEAN
  1571. Returns TRUE if "date" is in a valid date format 
  1572.  See also : ValTime
  1573. THelpTopic
  1574.   VALTIME(time:string) :BOOLEAN
  1575. Returns TRUE if "time" is in a valid time format 
  1576.  See also : ValDate
  1577. THelpTopic
  1578.   VER() :INTEGER
  1579. Returns the version number of PCBoard that is running 
  1580. THelpTopic
  1581.   XOR(var1:integer, var2:integer) :INTEGER
  1582. Returns the bitwise exclusive-or of two integer expressions 
  1583.  See also : Or And Not
  1584. THelpTopic
  1585.   YEAR(var:date) :INTEGER
  1586. Returns the year (1900-2079) of "var" 
  1587.  See also : Month Day Dow
  1588. THelpTopic
  1589.   YESCHAR() :STRING
  1590. Returns the current language yes character 
  1591.  See also : NoChar
  1592. THelpTopic
  1593.   ADJTIME min:integer
  1594. Add or subtract "min" minutes to the users time available this session 
  1595.  See also : EvtTimeAdj
  1596. THelpTopic
  1597.   ANSIPOS col:integer, row:integer
  1598. If ANSI is available, position the cursor in column "col" and in row "row" 
  1599.          Legal ranges:  1 <= col <= 80
  1600.                         1 <= row <= 23 (Because of the status lines)
  1601.                         (1,1) is the top left corner of the screen
  1602. Note : Be aware that the user may have a different number of lines on his screen... if the user has 50 lines for exemple and that you do an ANSIPOS sentence to position the cursor on the 23rd line, the user will have a prompt in the middle of his screen... 
  1603.  See also : GetX GetY
  1604. THelpTopic
  1605.   BACKUP var:integer
  1606. Backup (move the cursor to the left) "var" columns without going past column 1 
  1607.  See also : Forward
  1608. THelpTopic
  1609.   BITCLEAR variable:multitype, bit:integer
  1610. Clears a specified bit from a variable. 
  1611. This statement is primarily intended to be used with BIGSTR variables which can be up to 2048 bytes long. However, it will work with other data types as well if desired. Just be aware of the potential problems in 'bit twidling' non-string buffers and then trying to access them later as their 'intended' type without re-initializing the variable. If the bit parameter (an integer from 0 to the number of bits in the object) is invalid no processing takes place. 
  1612.  See also : BitSet IsBitSet
  1613. THelpTopic
  1614.   BITSET variable:multitype, bit:integer
  1615. Set a specified bit from a variable. 
  1616. This statement is primarily intended to be used with BIGSTR variables which can be up to 2048 bytes long. However, it will work with other data types as well if desired. Just be aware of the potential problems in 'bit twidling' non-string buffers and then trying to access them later as their 'intended' type without re-initializing the variable. If the bit parameter (an integer from 0 to the number of bits in the object) is invalid no processing takes place. 
  1617.  See also : BitClear IsBitSet
  1618. THelpTopic
  1619.   BLT bltnr:integer
  1620. Display bulletin number "bltnr" 
  1621. THelpTopic
  1622.   BROADCAST var1:integer, var2:integer, message:string
  1623. Broadcast message "message" to nodes from "var1" to "var2" inclusive 
  1624. THelpTopic
  1625.   BYE
  1626. Same as having the user type BYE from the command prompt #
  1627.  See also : Goodbye Hangup DtrOff
  1628. THelpTopic
  1629.   CALL ppename
  1630. Load and execute PPE filename specified by "ppename" 
  1631.  See also : Shell
  1632. THelpTopic
  1633.   CDCHKOFF
  1634. Turn off carrier detect checking 
  1635.  See also : CdCheckOn CdOn
  1636. THelpTopic
  1637.   CDCHKON
  1638. Turn on carrier detect checking 
  1639.  See also : CdCheckOff CdOn
  1640. THelpTopic
  1641.   CHAT
  1642. Initiate SysOp chat mode 
  1643.  See also : ChatStat PageStat
  1644. THelpTopic
  1645.   CLOSECAP
  1646. Close the capture file previously opened with OpenCap 
  1647.  See also OpenCap
  1648. THelpTopic
  1649.   CLREOL
  1650. Clear to the end of the line, with the current color if in ANSI mode 
  1651.  See also : Cls
  1652. THelpTopic
  1653.   CLS
  1654. Clear the screen, with the current color if in ANSI mode 
  1655.  See also : ClrEol
  1656. THelpTopic
  1657.   COLOR clr:integer
  1658. Change the current color to "clr" 
  1659.  See also : CurColor DefColor
  1660. THelpTopic
  1661.   CONFFLAG conf:integer, flags:integer
  1662. Turn on the conference "conf" flags specified by "flags" ~
  1663.  See also : ConfSel    ConfSys ConfMw    CurConf   ConfExp CurConf
  1664.            ConfUnFlag Join    ConfAlias LastIn    ConfReg
  1665. THelpTopic
  1666.   CONFUNFLAG conf:integer, flags:integer
  1667. Turn off the conference "conf" flags specified by "flags" z
  1668.  See also : ConfSel  ConfSys ConfMw    CurConf   ConfExp CurConf
  1669.            ConfFlag Join    ConfAlias LastIn    ConfReg
  1670. THelpTopic
  1671.   DEC var:multitype
  1672. Decrement the value of var 
  1673.  See also : Inc
  1674. THelpTopic
  1675.   DELAY dlay:integer
  1676. Pause for "dlay" clock ticks (1 clock tick = 1/18.2 second) 
  1677.  See also : Wait
  1678. THelpTopic
  1679.   DELETE file:string
  1680. Deletes the filename specified by "file" (ERASE is a synonym) .
  1681.  See also : Copy Append Exist FileInf Rename
  1682. THelpTopic
  1683.   DELUSER
  1684. Flags the current user record for deletion 
  1685. THelpTopic
  1686.   DIR arg:string
  1687. Performs a file directory command, passing it "arg" as arguments 
  1688. THelpTopic
  1689.   DISPFILE file:string, flag:integer
  1690. Display file "file" with "flag" alternate file flags X
  1691.         valid flags :   GRAPH
  1692.                         SEC
  1693.                         LANG
  1694.  See also : DispStr
  1695. THelpTopic
  1696.   DISPSTR var:string
  1697. Display file if "var" is "%filename", execute PPE if "var" is "!filename", or display string "var" 
  1698. THelpTopic
  1699.   DISPTEXT promptnr:integer, flagson:integer
  1700. Display PCBTEXT prompt "promptnr" using flags "flagson" 
  1701.          valid flags : NEWLINE
  1702.                        LFBEFORE
  1703.                        LFAFTER
  1704.                        BELL
  1705.                        LOGIT
  1706.                        LOGITLEFT
  1707.  See also : DispFile
  1708. THelpTopic
  1709.   DOINTR intr, ax, bx, cx, dx, si, di, flags, ds, es (all is integer)
  1710. Generate interrupt number "intr" (0-255) with the register values passed as parameters (
  1711. Note : Use DoIntr at your own risks ! 
  1712.  See also : RegAx RegAh RegAl
  1713.            RegBx RegBh RegBl
  1714.            RegCx RegCh RegCl
  1715.            RegDx RegDh RegDl
  1716.            RegDi RegEs RegSi
  1717.            RegDs RegCf RegF
  1718. THelpTopic
  1719.   DTROFF
  1720. Turn off the DTR signal 
  1721. Note : on most modems, lowering DTR will cause modem to hangup... this is a good way if you want to simulate a bad connection, and then hangup without goodbye screens... This is the best way for you, the nice sysop, to free your line quickly... :) &
  1722.  See also : DtrOn Goodbye Bye Hangup
  1723. THelpTopic
  1724.   DTRON
  1725. Turn on the DTR signal 
  1726.  See also : DtrOff
  1727. THelpTopic
  1728.   END
  1729. End PPE execution 
  1730.  See also : End
  1731. If End
  1732. While
  1733. THelpTopic
  1734.   FAPPEND chnl:integer, file:string, access:integer, shrmod:integer
  1735. Use channel "chnl" to open file "file" in append mode with access mode "access" and share mode "shrmod" 
  1736.          valid channels     : 0 - 7 [0 is used for script questionnaires]
  1737.          valid access modes : O_RD, O_WR, O_RW [should use O_RW]
  1738.          valid share modes  : S_DN, S_DR, S_DW, S_DB
  1739.  See also : FOpen FClose FCreate
  1740. THelpTopic
  1741.   FCLOSE chnl:integer
  1742. Close channel "chnl" E
  1743. Accept channel -1 as the ReadLine() function 'channel' and close it +
  1744.  See also : FAppend FClose FCreate FFlush
  1745. THelpTopic
  1746.   FCREATE chnl:integer, file:string, access:integer, shrmod:integer
  1747. Use channel "chnl" to create and open file "file" in access mode "access" and share mode "shrmod" 
  1748.          valid channels     : 0 - 7 [0 is used for script questionnaires]
  1749.          valid access modes : O_RD, O_WR, O_RW [should use O_WR]
  1750.          valid share modes  : S_DN, S_DR, S_DW, S_DB
  1751.  See also : FOpen FClose FAppend
  1752. THelpTopic
  1753.   FGET chnl:integer, var:multitype
  1754. Read a line from channel "chnl" and assign it to "var" '
  1755.  See also : FPut FPutLn FPutPad FRead
  1756. THelpTopic
  1757.   FOPEN chnl:integer, file:string, access:integer, shrmod:integer
  1758. Use channel "chnl" to open file "file" in access mode "access" and share mode "shrmod" 
  1759.          valid channels     : 0 - 7 [0 is used for script questionnaires]
  1760.          valid access modes : O_RD, O_WR, O_RW
  1761.          valid share modes  : S_DN, S_DR, S_DW, S_DB
  1762.  See also : FCreate FClose FAppend FDefIn FDefOut
  1763. THelpTopic
  1764.    FOR ... NEXT
  1765.  Usage :
  1766.  FOR VAR = start:integer TO stop:integer [STEP incstep:integer]
  1767.  NEXT
  1768. FOR - Initializes a loop by assigning "start" to VAR and continuing while VAR <= "stop" (if "incstep" >= 0) or VAR >= "stop" (if "incstep" < 0) (TO is required to separate "start" and "stop". If STEP (optional) is not specified "incstep" defaults to 1) q
  1769. NEXT - Adds "incstep" to VAR, transfers control to the closest FOR statement, and marks the end of the FOR loop (
  1770.  See also : While...EndWhile If...Then
  1771. THelpTopic
  1772.   FORWARD var:integer
  1773. Move the cursor forward (to the right) "var" columns without going past column 80 
  1774.  See also : Backup
  1775. THelpTopic
  1776.   FPUT chnl:integer, str:string[, str:string...]
  1777. Write one or more "str" out to channel "chnl" /
  1778.  See also : FGet FPutLn FPutPad FWrite FWrite
  1779. THelpTopic
  1780.   FPUTLN chnl:integer[, str:string[, str:string...]]
  1781. Write zero or more "str" out to channel "chnl" and terminate with a carriage return/line feed pair ,
  1782.  See also : FGet FPut FPutPad FRead FWrite
  1783. THelpTopic
  1784.   FPUTPAD chnl:integer, str:string, len:integer
  1785. Write out "str", padding or truncating to length "len" as needed, to channel "chnl" +
  1786.  See also : FGet FPut FPutLn FRead FWrite
  1787. THelpTopic
  1788.   FRESHLINE
  1789. If the cursor is not in column 1, do a newline 
  1790.  See also : NewLine NewLines
  1791. THelpTopic
  1792.   FREWIND chnl:integer
  1793. Rewind channel "chnl" after flushing buffers and committing the file to disk. 
  1794.  See also : FSeek
  1795. THelpTopic
  1796.   GETUSER
  1797. Fill the predefined variables (U_...) with current information from the user record 
  1798. THelpTopic
  1799.   GOSUB LABEL
  1800. Transfer control to LABEL, marking the current PPE location for a future Return statement (GO SUB is a synonym) 
  1801.  See also : GoTo
  1802. THelpTopic
  1803.   GOTO LABEL
  1804. Transfer control to LABEL (GO TO is a synonym) 
  1805.  See also : GoSub
  1806. THelpTopic
  1807.   GOODBYE
  1808. Same as having the user type G from the command prompt 
  1809.  See also : Bye DtrOff Hangup
  1810. THelpTopic
  1811.   HANGUP
  1812. Hangup on the user without any notification  
  1813.  See also : Bye Goodbye DtrOff
  1814. THelpTopic
  1815.   IF ... THEN ... ELSE
  1816.   Usage 1:
  1817.   IF (exp:boolean) statement ...
  1818. Evaluate "exp" and, if true, execute statement; otherwise skip to the next statement 
  1819.   Usage 2:
  1820.    IF (exp:boolean) THEN
  1821.    ...
  1822.    ELSEIF (exp2:boolean) THEN
  1823.    ...
  1824.    ELSE
  1825.    ...
  1826.    ENDIF
  1827. IF - If expression cond is TRUE then this statement transfers control to the statement(s) following it, otherwise control is tranferred to the next ELSEIF, ELSE or ENDIF statement (requires THEN [or DO] after the condition) 
  1828. ELSEIF - (optional) If expression cond is TRUE then this statement transfers control to the statements following it, otherwise control is tranferred to the next ELSEIF, ELSE or ENDIF statement There may be multiple ELSEIF statements between the IF and ELSE statements (ELSE IF is a synonym; nothing is required to come after the condition, although THEN [or DO] may appear for clarification and consistency in the source code) _
  1829. ELSE - (optional) Separates the false portion of an IF/ELSEIF statement from the true portion F
  1830. ENDIF - Ends an IF/ELSEIF/ELSE statement block (END IF is a synonym) )
  1831.  See also : While...EndWhile For...Next
  1832. THelpTopic
  1833.   INC var:multitype
  1834. Increment the value of "var" 
  1835.  See also : Dec
  1836. THelpTopic
  1837.   INPUT prompt:string, var:string
  1838. Display "prompt" and get input from user, assigning it to "var" (60 characters maximum) f
  1839.  See also : InputCC   InputDate InputInt  InputMoney InputStr
  1840.            InputText InputTime InputYN
  1841. THelpTopic
  1842.   INPUTCC prompt:string, var:string, color:integer
  1843. Display "prompt" in color "color" and get a credit card formatted string from the user, assigning it to "var" (16 characters maximum, valid characters 0-9) f
  1844.  See also : Input     InputDate InputInt  InputMoney InputStr
  1845.            InputText InputTime InputYN
  1846. THelpTopic
  1847.   INPUTDATE prompt:string, var:string, color:integer
  1848. Display "prompt" in color "color" and get a date formatted string from the user, assigning it to "var" (8 characters maximum, valid characters 0-9 - /) f
  1849.  See also : Input     InputCC   InputInt  InputMoney InputStr
  1850.            InputText InputTime InputYN
  1851. THelpTopic
  1852.   INPUTINT prompt:string, var:string, color:integer
  1853. Display "prompt" in color "color" and get an integer formatted string from the user, assigning it to "var" (11 characters maximum, valid characters 0-9) g
  1854.  See also : Input     InputCC   InputDate  InputMoney InputStr
  1855.            InputText InputTime InputYN
  1856. THelpTopic
  1857.   INPUTMONEY prompt:string, var:string, color:integer
  1858. Display "prompt" in color "color" and get a money formatted string from the user, assigning it to "var" (13 characters maximum, valid characters 0-9 $ .) e
  1859.  See also : Input     InputCC   InputDate  InputInt InputStr
  1860.            InputText InputTime InputYN
  1861. THelpTopic
  1862.   INPUTSTR...
  1863.   Usage :
  1864. INPUTSTR prompt:string, var:string, color:integer, len:integer, valid:string, flags:string 
  1865. Display "prompt" in color "color" and get a string (maximum length "len", valid characters "valid", flags "flags") from the user, assigning it to "var" 
  1866.          valid length           : 1-256
  1867.          valid characters       : any string
  1868.          valid flags            : ECHODOTS
  1869.                                   FIELDLEN
  1870.                                   GUIDE
  1871.                                   UPCASE
  1872.                                   STACKED
  1873.                                   ERASELINE
  1874.                                   NEWLINE
  1875.                                   LFBEFORE
  1876.                                   LFAFTER
  1877.                                   WORDWRAP
  1878.                                   NOCLEAR
  1879.                                   HIGHASCII
  1880.                                   AUTO
  1881.                                   YESNO
  1882.  See also : Input     InputCC    InputDate InputInt InputMoney
  1883.            InputText InputTime  InputYN
  1884. THelpTopic
  1885.   INPUTTEXT prompt:string, var:string, color:integer, len:integer
  1886. Display "prompt" in color "color" and get a string (maximum length "len") from the user, assigning it to "var" h
  1887.  See also : Input     InputCC    InputDate InputInt InputMoney
  1888.            InputStr  InputTime  InputYN
  1889. THelpTopic
  1890.   INPUTTIME prompt:string, var:string, color:integer
  1891. Display "prompt" in color "color" and get a time formatted string from the user, assigning it to "var" (8 characters maximum, valid characters 0-9 :) e
  1892.  See also : Input    InputCC   InputDate  InputInt InputMoney
  1893.            InputStr InputText InputYN
  1894. THelpTopic
  1895.   INPUTYN prompt:string, var:string, color:integer
  1896. Display "prompt" in color "color" and get a yes/no response from the user, assigning it to "var" (1 characters maximum, valid characters determined by language) h
  1897.  See also : Input     InputCC   InputDate InputInt InputMoney
  1898.            InputStr  InputText InputTime
  1899. THelpTopic
  1900.   JOIN conf:integer
  1901. Performs a join conference command, passing it "conf" as arguments 
  1902.  See also : ConfSel ConfSys  ConfMw     CurConf   ConfExp
  1903.            CurConf ConfFlag ConfUnFlag ConfAlias LastIn
  1904.            ConfReg
  1905. THelpTopic
  1906.   KBDCHKOFF
  1907. Turn off keyboard time out checking 
  1908. THelpTopic
  1909.   KBDCHKON
  1910. Turn on keyboard time out checking 
  1911. THelpTopic
  1912.   KBDFILE file:string
  1913. Stuff the keyboard buffer with the contents of file "file" t
  1914.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdString
  1915.            KbdFileUsed MdmFlush   KeyFlush KbdFlush
  1916. THelpTopic
  1917.   KBDSTUFF str:string
  1918. Stuff the keyboard buffer with the contents of "str" s
  1919.  See also : KbdBufSize  PPLBufSize KbdFlush KbdFile KbdString
  1920.            KbdFileUsed MdmFlush   KeyFlush KbdFlush
  1921. THelpTopic
  1922.   LET var:multitype = EXP
  1923. Evaluate expression "EXP", convert and assign to "VAR" .
  1924. NOTE:  LET is the only optional keyword.  If no keyword is found, LET is assumed.  There are certain circumstances where it may be required, such as assignment to a variable named the same as a statement. PRINT, for example, would require a line such as LET PRINT = TRUE instead of just PRINT = TRUE) 
  1925. THelpTopic
  1926.   LOG str:string, just:boolean
  1927. Write string "str" to the callers log, left justified if "just" is TRUE 
  1928. THelpTopic
  1929.    MESSAGE...
  1930.    Usage :
  1931. MESSAGE conf:integer, to:string, from:string, subject:string, sec:string, msgdate:date, retreceipt:boolean, echo:boolean, file:string 
  1932. Write a message in conference "conf", to user "to" (empty string defaults to current caller), from user "from" (empty string defaults to current caller), subject "subject", security in "sec" (N or R; N is the default), pack out date in "msgdate" (0 for no pack out date), "retreceipt" True if return receipt desired, "echo" TRUE if message should be echoed, and "file" is the filename to use for the message text 
  1933. THelpTopic
  1934.   MORE
  1935. Displays a MORE? prompt 
  1936.  See also : Wait Delay
  1937. THelpTopic
  1938.   MOUSEREG num,x1,y1,x2,y2,fontX,fontY,invert,clear,text
  1939. Set up a RIP mouse region on the remote terminal. $
  1940.        num    = Is the RIP region number
  1941.        x1,y1  = The (X,Y) coordinates of the upper-left of the region
  1942.        x2,y2  = The (X,Y) coordinates of the lower-right of the region
  1943.        fontX  = The width of each character in pixels
  1944.        fontY  = The height of each character in pixels
  1945.        invert = A boolean flag (TRUE to invert the region when clicked)
  1946.        clear  = A boolean flag (TRUE to clear and full screen the text window)
  1947.        text   = Text that the remote terminal should transmit when the region
  1948.                 is clicked
  1949.  See also : GrafMode
  1950. THelpTopic
  1951.   MPRINT str:string[, str:string...]
  1952. Display one or more string expressions on the callers screen only (this statement does not send anything to the BBS screen) 4
  1953.  See also : MPrintLn Print PrintLn SPrint SPrintLn
  1954. THelpTopic
  1955.   MPRINTLN [str:string[, str:string...]]
  1956. Display zero or more string expressions on the callers screen only and follow with a newline (this statement does not send anything to the BBS screen) 2
  1957.  See also : MPrint Print PrintLn SPrint SPrintLn
  1958. THelpTopic
  1959.   NEWLINE
  1960. Write a newline to the display  
  1961.  See also : NewLines FreshLine
  1962. THelpTopic
  1963.   NEWLINES var
  1964. Write "var" newlines to the display 
  1965.  See also : NewLine FreshLine
  1966. THelpTopic
  1967.   OPENCAP captfile:string, error:boolean
  1968. Open "captfile" and capture all screen output to it. o
  1969. If an error occurs creating or opening "captfile", "error" is set to TRUE, otherwise "error" is set to FALSE. 
  1970.  See also : CloseCap
  1971. THelpTopic
  1972.   OPTEXT str:string
  1973. Writes string "str" into the @OPTEXT@ macro 
  1974. THelpTopic
  1975.   PAGEOFF
  1976. Turn off the SysOp paged indicator (flashing p on status line) 
  1977.  See also : PageOn
  1978. THelpTopic
  1979.   PAGEON
  1980. Turn on the SysOp paged indicator (flashing p on status line) 
  1981.  See also : PageOff
  1982. THelpTopic
  1983.   POKEB addr:integer, val:integer
  1984. Assign the value "val" (0-255) to memory address "addr" (POKE is a synonym) -
  1985.  See also : PeekB PeekDW PeekW PokeW PokeDW
  1986. THelpTopic
  1987.   POKEDW addr:integer, val:integer
  1988. Assign the value "val" (-2147483648 - +2147483647) to memory address "addr" ,
  1989.  See also : PeekB PeekDW PeekW PokeB PokeW
  1990. THelpTopic
  1991.   POKEW addr:integer, val:integer
  1992. Assign the value "val" (0-65535) to memory address "addr" -
  1993.  See also : PeekB PeekDW PeekW PokeB PokeDW
  1994. THelpTopic
  1995.   POP var[,var...]
  1996. Pop values (previously pushed onto the stack) into a list of variables 
  1997.  See also : Push
  1998. THelpTopic
  1999.   PRFOUND & PRFOUNDLN
  2000. These work just like Print and PrintLn but, if the last SearchFind statement resulted in a match, it will automatically highlight found words. 
  2001.  See also : SearchFind
  2002. THelpTopic
  2003.   PRINT str:string[, str:string...]
  2004. Display one or more string expressions 5
  2005.  See also : MPrint MPrintLn PrintLn SPrint SPrintLn
  2006. THelpTopic
  2007.   PRINTLN [str:string[, str:string...]]
  2008. Display zero or more string expressions and follow with a newline 3
  2009.  See also : MPrint MPrintLn Print SPrint SPrintLn
  2010. THelpTopic
  2011.   PROMPTSTR prompt:integer, var:string, len:integer, valid:string, flags:integer
  2012. Display PCBTEXT entry "prompt" and get a string (maximum length "len", valid characters "valid", flags "flags") from the user, assigning it to "var" B
  2013.          valid length     : 1-256
  2014.          valid characters : any string
  2015.          valid flags      : ECHODOTS
  2016.                             FIELDLEN
  2017.                             GUIDE
  2018.                             UPCASE
  2019.                             STACKED
  2020.                             ERASELINE
  2021.                             NEWLINE
  2022.                             LFBEFORE
  2023.                             LFAFTER
  2024.                             WORDWRAP
  2025.                             NOCLEAR
  2026.                             HIGHASCII
  2027.                             AUTO
  2028.                             YESNO
  2029.  See also : DispText
  2030. THelpTopic
  2031.   PUSH var[,var...]
  2032. Push a list of evaluated expressions onto the stack 
  2033.  See also : Pop
  2034. THelpTopic
  2035.   PUTUSER
  2036. Write the information from the predefined variables (U_...) to the user record 
  2037. This statement is only intended to update user information if a successful GetUser or GetAltUser was issued previously.  This was done to ensure that information for the current user wasn't written to another user or vice versa. 
  2038.  See also : GetUser
  2039. THelpTopic
  2040.   QUEST nr:integer
  2041. Do script questionnaire "nr" 
  2042. THelpTopic
  2043.   RDUNET node:integer
  2044. Read information from USERNET.XXX for node "node" "
  2045.  See also : RdUsys WrUnet WrUsys
  2046. THelpTopic
  2047.   RDUSYS
  2048. Reads a USERS.SYS file, if present, and updates the users record "
  2049.  See also : RdUnet WrUnet WrUsys
  2050. THelpTopic
  2051.   RENAME oldname:string, newname:string
  2052. Rename file "oldname" to "newname" .
  2053.  See also : Delete Copy Append Exist FileInf
  2054. THelpTopic
  2055.   RESETDISP
  2056. Reset the display after an user abort 
  2057. THelpTopic
  2058.   RESTSCRN
  2059. Restore the screen from the buffer previously saved with SaveScrn 
  2060.  See also : SaveScrn
  2061. THelpTopic
  2062.   RETURN
  2063. Return to the statement after the last GoSub or, if no GoSub is waiting for a RETURN, End the PPE 
  2064. THelpTopic
  2065.   SAVESCRN
  2066. Save the current screen in a buffer for later restoration with the RestScrn 
  2067.  See also : RestScrn
  2068. THelpTopic
  2069.   SCRFILE lineVar, filenameVar
  2070. Find a file name and line number that is currently on the screen. 
  2071. lineVar     = Should be set before calling to the line number to start searching on (1 is the top line); Will be set to the line number where the file name was found or 0 if no file name was found filenameVar = Will be set to the file name if one is found on screen 
  2072.  See also : ScrText
  2073. THelpTopic
  2074.   SENDMODEM str:string
  2075. Send the text in "str" out to the modem 
  2076. THelpTopic
  2077.   SEARCHINIT criteria, caseSensitive
  2078. Initialize search parameters for a faster BOYER-MOORE search algorithm. 
  2079. criteria      = A string expression with the search criteria in the same format used by PCBoard (ie, "THIS & THAT | BOB") caseSensitive = A boolean flag (TRUE to force a case sensitive search, FALSE otherwise) 5
  2080.  See also : SearchFind PRFound/PRFoundLn SearchStop
  2081. THelpTopic
  2082.   SEARCHFIND bufferExpr, foundVar
  2083. Execute a BOYER-MOORE search on a text buffer using criteria previously defined with a SearchInit statement. x
  2084. bufferExpr = The buffer to search foundVar   = Set to TRUE if bufferExpr contains the search criteria, FALSE otherwise 5
  2085.  See also : SearchInit PRFound/PRFoundLn SearchStop
  2086. THelpTopic
  2087.   SEARCHSTOP
  2088. Clears out previously entered search criteria. It takes no parameters. 5
  2089.  See also : SearchInit SearchFind PRFound/PRFoundLn
  2090. THelpTopic
  2091.   SHELL com:boolean, code:integer, prog:string, arg:string
  2092. Shell (via COMMAND.COM if "com" is TRUE) to program/command "prog" with arguments "arg", saving the return value in "var" j
  2093. NOTE:  If "com" is TRUE, the value assigned to "var" will be the return code of COMMAND.COM, not "prog") 
  2094.  See also : Call
  2095. THelpTopic
  2096.   SHOWOFF
  2097. Turns off display of information to the screen 
  2098.  See also : ShowStat ShowOn
  2099. THelpTopic
  2100.   SHOWON
  2101. Turns on display of information to the screen 
  2102.  See also : ShowStat ShowOff
  2103. THelpTopic
  2104.   SORT sortArry, pointerArray
  2105. Sort the contents of an array into a pointer array. G
  2106. sortArray    = The data to sort (Any type may be used for this array) 
  2107. pointerArray = An integer array which will be used as an array of pointers into sortArray for accessing sortArray in sorted order (This array should be of type INTEGER) U
  2108. Note that sortArray and pointerArray are restricted to one (1) dimensional arrays. R
  2109. The following is an example of displaying an array in unsorted and sorted order: 
  2110.      STRING  s(999) ; Remember that arrays are 0-based, so these statements
  2111.      INTEGER p(999) ; will allocate 1000 elements each
  2112.      ; Do something here to read data into s
  2113.      SORT s,p
  2114.      INTEGER i
  2115.      FOR i = 0 TO 999 ; This loop will display in unsorted order
  2116.        PRINTLN s(i)
  2117.      NEXT
  2118.      FOR i = 0 TO 999 ; This loop will display in sorted order
  2119.        PRINTLN s(p(i))
  2120.      NEXT
  2121. THelpTopic
  2122.    SOUND freq:integer
  2123. Turn on the BBS PC speaker at the frequency (1-65535) specified by "freq" (or turn it off if the frequency is 0) 
  2124. THelpTopic
  2125.   SPRINT str:string[, str:string...]
  2126. Display one or more string expressions on the BBS screen only (this statement does not send anything to the modem) 4
  2127.  See also : MPrintLn MPrint Print PrintLn SPrintLn
  2128. THelpTopic
  2129.   SPRINTLN [str:string[, str:string...]]
  2130. Display zero or more string expressions on the BBS screen only and follow with a newline (this statement does not send anything to the modem) 2
  2131.  See also : MPrintLn MPrint Print PrintLn SPrint
  2132. THelpTopic
  2133.   STARTDISP mode:integer
  2134. Start display monitoring in mode "mode" N
  2135.         valid modes : NC
  2136.                       FNS
  2137.                       FCL
  2138. THelpTopic
  2139.   STOP
  2140. Abort PPE execution without appending answers (channel 0) to the answer file 
  2141.  See also : End
  2142. THelpTopic
  2143.   TOKENIZE str:string
  2144. Tokenize string "string" into individual items separated by semi-colons or spaces (
  2145.  See also : GetToken TokenStr TokCount
  2146. THelpTopic
  2147.   TPAGET keyWord, infoVar
  2148. Get static information from a named TPA in string format. )
  2149. keyword = The keyword of the TPA to use <
  2150. infoVar = The variable into which to store the information f
  2151.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2152.            TPAWrite TPACRead  TPACWrite
  2153. THelpTopic
  2154.   TPAPUT keyWord, infoExpr
  2155. Put static information to a named TPA in string format. *
  2156. keyword  = The keyword of the TPA to use 5
  2157. infoExpr = The expression to write to store the TPA c
  2158.  See also : Psa      TPACGet   TPACPut    TPARead
  2159.            TPAWrite TPACRead  TPACWrite  TPAGet
  2160. THelpTopic
  2161.   TPACGET keyWord, infoVar, confNum
  2162. Get information from a named TPA for a specified conference in string format. )
  2163. keyword = The keyword of the TPA to use <
  2164. infoVar = The variable into which to store the information C
  2165. confNum = The conference number for which to retrieve information c
  2166.  See also : Psa      TPAPut    TPACPut    TPARead
  2167.            TPAWrite TPACRead  TPACWrite  TPAGet
  2168. THelpTopic
  2169.   TPACPUT keyWord, infoExpr, confNum
  2170. Put information to a named TPA for a specified conference in string format. *
  2171. keyword  = The keyword of the TPA to use 5
  2172. infoExpr = The expression to write to store the TPA D
  2173. confNum  = The conference number for which to retrieve information c
  2174.  See also : Psa      TPAPut    TPACGet    TPARead
  2175.            TPAWrite TPACRead  TPACWrite  TPAGet
  2176. THelpTopic
  2177.   TPAREAD keyWord, infoVar
  2178. Get static information from a named TPA. )
  2179. keyword = The keyword of the TPA to use <
  2180. infoVar = The variable into which to store the information c
  2181.  See also : Psa      TPAPut    TPACGet    TPACPut
  2182.            TPAWrite TPACRead  TPACWrite  TPAGet
  2183. THelpTopic
  2184.   TPAWRITE keyWord, infoExpr
  2185. Put static information to a named TPA. *
  2186. keyword  = The keyword of the TPA to use 5
  2187. infoExpr = The expression to write to store the TPA c
  2188.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2189.            TPACRead TPACWrite TPAGet
  2190. THelpTopic
  2191.   TPACREAD keyWord, infoVar, confNum
  2192. Get information from a named TPA for a specified conference. )
  2193. keyword = The keyword of the TPA to use <
  2194. infoVar = The variable into which to store the information C
  2195. confNum = The conference number for which to retrieve information c
  2196.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2197.            TPAWrite TPACWrite TPAGet
  2198. THelpTopic
  2199.   TPACWRITE keyWord, infoExpr, confNum
  2200. Put information to a named TPA for a specified conference. *
  2201. keyword  = The keyword of the TPA to use 5
  2202. infoExpr = The expression to write to store the TPA D
  2203. confNum  = The conference number for which to retrieve information c
  2204.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2205.            TPAWrite TPACRead  TPAGet
  2206. THelpTopic
  2207.   VARADDR var1:multitype, var2:integer
  2208. Assign the address (segment and offset) of "var1" to "var2" "
  2209.  See also : VarSeg VarOff MkAddr
  2210. THelpTopic
  2211.   VAROFF var1:multitype, var2:integer
  2212. Assign the offset address of "var1" to "var2" #
  2213.  See also : VarSeg VarAddr MkAddr
  2214. THelpTopic
  2215.   VARSEG var1:multitype, var2:integer
  2216. Assign the segment address of "var1" to "var2" "
  2217.  See also : VarOff VarOff MkAddr
  2218. THelpTopic
  2219.   WAIT
  2220. Displays a PRESS ENTER TO CONTINUE? prompt !
  2221.  See also : More Delay Wait
  2222. THelpTopic
  2223.   WAITFOR prompt:string, var:boolean, time:integer
  2224. Wait up to "time" seconds for the string "prompt", assigned TRUE to "var" if the string is found in the time specified or FALSE if the string is not found (WAIT FOR is a synonym) 
  2225.  See also : Wait
  2226. THelpTopic    
  2227.    WHILE...
  2228.    Usage 1:
  2229.    WHILE (exp:boolean) statement ...
  2230. While "exp" is true execute statement; when "exp" is false execute following statements 
  2231.    Usage 2:
  2232.    WHILE (exp) DO
  2233.    ...
  2234.    ENDWHILE
  2235. WHILE - While "exp" is true execute statement(s); when "exp" is false transfer control to the first statement following the ENDWHILE statement (requires DO [or THEN] after the expression) z
  2236. ENDWHILE - Transfers control to the closest WHILE statement and marks the end of the WHILE loop (END WHILE is a synonym) !
  2237.  See also : If..Then For...Next
  2238. THelpTopic
  2239.   WRUNET...
  2240.   Usage :
  2241. WRUNET node:integer, nodestat:string, nodeusername:string,newnodecity:string, newoptext:string,broacasttext:string 
  2242. Write information to USERNET.XXX for node "node", where "nodestat" is the new node status, "nodeusername" is the new node user name, "newnodecity" is the new node city, "newoptext" is the new node operation text, and "broadcasttext" is broadcast text "
  2243.  See also : RdUnet RdUsys WrUsys
  2244. THelpTopic
  2245.   WRUSYS
  2246. Writes (creates) a USERS.SYS file which can be used by a SHELLed application "
  2247.  See also : RdUnet RdUsys WrUnet
  2248. THelpTopic
  2249.   BREAK
  2250. Can be used to break out of a WHILE or FOR loop without the use of a GOTO statement 
  2251.  See also : Continue Quit
  2252. THelpTopic
  2253.   QUIT
  2254. Can be used to break out of a WHILE or FOR loop without the use of a GOTO statement (alias for BREAK) 
  2255.  See also : Continue Quit
  2256. THelpTopic
  2257.   CONTINUE
  2258. Can be used to abort the current iteration of a WHILE or FOR loop and resume with the next iteration of the loop 
  2259.  See also : Quit Break Loop
  2260. THelpTopic
  2261.   LOOP
  2262. Can be used to abort the current iteration of a WHILE or FOR loop and resume with the next iteration of the loop (alias for CONTINUE) !
  2263.  See also : Quit Break Continue
  2264. THelpTopic
  2265.   FFLUSH chnl:integer
  2266. flush a specified channels changes to disk 
  2267.  See also : FClose
  2268. THelpTopic
  2269.   FSEEK chnl:integer, byte:integer, position:integer
  2270. Position to any random location within a file A
  2271. bytes is the number of bytes to move (+/-) relative to position 8
  2272. position is the base location to start the seek from : 
  2273.         SEEK_SET (0) for the beginning of the file
  2274.         SEEK_CUR (1) for the current file pointer location
  2275.         SEEK_END (2) for the end of the file
  2276.  See also : FRewind
  2277. THelpTopic
  2278.   FREAD chnl:integer, var:multitype, size:integer
  2279. Read binary data from a file 4
  2280. var is the variable into which data should be read 6
  2281. size is the size of data to read into var (0 - 2048) 
  2282.  See also : FGet
  2283. THelpTopic
  2284.   FWRITE chnl:integer, exp:multitype, size:integer
  2285. Write binary data to a file 6
  2286. exp is the expression whose result should be written *
  2287. size is the size of data to write to var !
  2288.  See also : FPut FPutPad FPutLn
  2289. THelpTopic
  2290.   FDEFIN chnl:integer
  2291. Specify a default input file channel (used to speed up file input) 
  2292.  See also : FOpen
  2293. THelpTopic
  2294.   FDEFOUT chnl:integer
  2295. Specify a default output file channel (used to speed up file output) 
  2296.  See also : FOpen
  2297. THelpTopic
  2298.   FDGET var:multitype
  2299. Default channel input statement: use the exact same arguments as FGet except a channel parameter (the channel specified by FDefIn is assumed) 3
  2300.  See also : FDPut FDPutPad FDPutLn FDRead FDWrite
  2301. THelpTopic
  2302.   FDREAD var:multitype, size:integer
  2303. Default channel input statement: use the exact same arguments as FRead except a channel parameter (the channel specified by FDefIn is assumed) 2
  2304.  See also : FDPut FDPutPad FDPutLn FDGet FDWrite
  2305. THelpTopic
  2306.   FDPUT str:string[, str:string...]
  2307. Default channel output statement: use the exact same arguments as FPut except a channel parameter (the channel specified by FDefOut is assumed) 3
  2308.  See also : FDRead FDPutPad FDPutLn FDGet FDWrite
  2309. THelpTopic
  2310.   FDPUTLN str:string[, str:string...]
  2311. Default channel output statement: use the exact same arguments as FPutLn except a channel parameter (the channel specified by FDefOut is assumed) 1
  2312.  See also : FDRead FDPutPad FDPut FDGet FDWrite
  2313. THelpTopic
  2314.   FDPUTPAD str:string, len:integer
  2315. Default channel output statement: use the exact same arguments as FPutPad except a channel parameter (the channel specified by FDefOut is assumed) 0
  2316.  See also : FDRead FDPutLn FDPut FDGet FDWrite
  2317. THelpTopic
  2318.   FDWRITE exp:multitype, size:integer
  2319. Default channel output statement: use the exact same arguments as FWrite except a channel parameter (the channel specified by FDefOut is assumed) 2
  2320.  See also : FDRead FDPutPad FDPut FDGet FDPutPad
  2321. THelpTopic
  2322.   REDIM
  2323. Dynamically redimension an array at run-time. 
  2324. To use it you must declare the array in advance with the number subscripts desired.  This allows the compiler to perform it's standard error checking on subscripts.  For example: c
  2325.      STRING s(1,1,1)
  2326.      REDIM s,5,5,5
  2327.      LET s(4,4,4) = "Hello, World!"
  2328.      PRINTLN s(4,4,4)
  2329. If an attempt is made to redimension an array with a different number of dimensions, an error or warning (as appropriate) will be generated. !
  2330.  See also : Compilation
  2331. Options
  2332. THelpTopic
  2333.   APPEND srcfile:string, destfile:string
  2334. Append the contents of one file to another file. 
  2335.      APPEND "SRCFILE","DSTFILE"
  2336.  See also : Delete Copy Exist FileInf Rename
  2337. THelpTopic
  2338.   COPY srcfile:string, destfile:string
  2339. Copy the contents of one file to another file. 
  2340.      COPY "SRCFILE","DSTFILE"
  2341.  See also : Delete Append Exist FileInf Rename
  2342. THelpTopic
  2343.   LASTIN conf:integer
  2344. Set the users last conference in value. It can be used during the logon process to force the user into a particular conference at start up (for example, from a logon script). v
  2345.  See also : ConfSel  ConfSys ConfMw  CurConf   ConfExp CurConf
  2346.            ConfFlag ConfUnFlag Join ConfAlias ConfReg
  2347. THelpTopic
  2348.   FLAG filepath:string
  2349. Allow flagging files for download directly from a PPE. 
  2350.      FLAG "C:\PATH\FILENAME.ZIP" ; Or whatever file name desired
  2351. Note that FLAG does not attempt to honor restrictions in the FSEC and/or DLPATH.LST files.  This allows you to flag up any file desired. 
  2352.  See also : FlagCnt Download
  2353. THelpTopic
  2354.   DOWNLOAD cmd:string
  2355. Downloading files from PPL. 
  2356.      DOWNLOAD "CMD;CMD;CMD"
  2357. The string passed to DOWNLOAD is a list of commands in the same format as what a user would type after a D or DB command. 
  2358. If a file name for download is specified here it must be downloadable according to the criteria established in the FSEC and DLPATH.LST files. 
  2359. If it is necessary to download a file not normally available via the FSEC and/or DLPATH.LST files the FLAG statement may be used to force it into the list of files to download. 
  2360.  See also : Flag
  2361. THelpTopic
  2362.   FLAGCNT()
  2363. Return the number of files flagged for download. 
  2364.  See also : Flag
  2365. THelpTopic
  2366.   WRUSYSDOOR str:string
  2367. Write a USERS.SYS file with a TPA record for a DOOR application. 
  2368.      WRUSYSDOOR "DOORNAME"
  2369.  See also : WrUsys
  2370. THelpTopic
  2371.   KBDSTRING str:string
  2372. Stuff strings to the keyboard (just like KbdStuff except 'keystrokes' are echoed to the display) r
  2373.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2374.            KbdFileUsed MdmFlush   KeyFlush KbdFlush
  2375. THelpTopic
  2376.   KBDFLUSH
  2377. Flush the local keyboard buffer and any stuffed keystroke buffers. It takes no arguments. s
  2378.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2379.            KbdFileUsed MdmFlush   KbdFlush KbdString
  2380. THelpTopic
  2381.   MDMFLUSH
  2382. Flush the incoming modem buffer.  It takes no arguments. s
  2383.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2384.            KbdFileUsed KeyFlush   KbdFlush KbdString
  2385. THelpTopic
  2386.   KEYFLUSH
  2387. Flush both the local buffers and the incoming modem buffer. It takes no arguments. s
  2388.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2389.            KbdFileUsed MdmFlush   KbdFlush KbdString
  2390. THelpTopic
  2391.   ALIAS yesno:boolean
  2392. Allow PPE control of whether or not the user is using an alias 
  2393.  See also : PSA(1) UserAlias
  2394.   ALIAS() :BOOLEAN
  2395. Return the users current ALIAS setting (TRUE = alias use on, FALSE = alias use off) 
  2396.  See also : TPAGet
  2397. THelpTopic
  2398.   CONFALIAS()
  2399. Return TRUE if the current conference is configured to allow aliases v
  2400.  See also : ConfSel  ConfSys ConfMw  CurConf   ConfExp CurConf
  2401.            ConfFlag ConfUnFlag Join LastIn    ConfReg
  2402. THelpTopic
  2403.    USERALIAS() :BOOLEAN
  2404. Return TRUE if the current user is allowed to use an alias 
  2405.  See also : Alias
  2406. THelpTopic
  2407.   LANG
  2408. Change the language in use by the current user. 
  2409.      LANG langNum
  2410.  See also : LangExt
  2411. THelpTopic
  2412.   ADJBYTES bytes:integer
  2413. Adjust the users total and daily download X
  2414. To subtract bytes use a negative number for bytes. To add bytes use a positive number. +
  2415.  See also : AdjDBytes AdjTBytes AdjTFiles
  2416. THelpTopic
  2417.   ADJDBYTES bytes:integer
  2418. Adjust the users daily download bytes. X
  2419. To subtract bytes use a negative number for bytes. To add bytes use a positive number. *
  2420.  See also : AdjTBytes AdjTFiles AdjBytes
  2421. THelpTopic
  2422.   ADJTBYTES bytes:integer
  2423. Adjust the users total download bytes. X
  2424. To subtract bytes use a negative number for bytes. To add bytes use a positive number. *
  2425.  See also : AdjDBytes AdjTFiles AdjBytes
  2426. THelpTopic
  2427.   ADJTFILES files:integer
  2428. Adjust the users total download files. X
  2429. To subtract files use a negative number for files. To add files use a positive number. *
  2430.  See also : AdjDBytes AdjTBytes AdjBytes
  2431. THelpTopic
  2432.   PUTALTUSER
  2433. Put user information. It is merely an alias for PutUser and may be used anywhere that PUTUSER would be used. 
  2434.  See also : GetAltUser
  2435. THelpTopic
  2436.   GETALTUSER user:integer
  2437. Get the information for an alternate user. 
  2438. It will fill the user variables with information from the specified user record as well as redirect user statements and functions. 
  2439.      GETALTUSER userRecordNumber
  2440. If an attempt is made to get a record number that doesn't exist, the user functions will revert to the current user and the user variables will be invalidated as though no GetUser/GetAltUser statement had been issued (though they will continue to maintain any value held). PutUser/PutAltUser should be issued to commit any variable changes to the user record. Additionally, there is at least one statement that will not affect alternate users:  AdjTime. It is restricted to the current user online. Also, if the alternate user is online, changes to the record won't take hold until after the user has logged off. Also, if there is not enough memory available (primarily for the last message read pointers) this statement will fail. 
  2441.  See also : PutAltUser
  2442. THelpTopic
  2443.   CURUSER() :INTEGER
  2444. Determine what users information, if any, is available via the user variables.  It takes no arguments and returns one of the following values: 
  2445.      NO_USER (-1) - User variables are currently undefined
  2446.      CUR_USER (0) - User variables are for the current user
  2447.      Other        - The record number of an alternate user for whom user
  2448.                     variables are defined
  2449. THelpTopic
  2450.   Compilation Directives
  2451.  ;$INCLUDE:
  2452. Source files can be included from other source files. This is accomplished with a compiler directive in a comment like this: 
  2453.       ;$INCLUDE:FILESPEC.EXT
  2454. Note that the first character need not be the semi-colon. An apostrophe ['] or asterisk [*] may also be used where appropriate. 
  2455. This allows you to include subroutines from a source code 'library'. This should help in starting reusable code fragments. When the file is included, it is compiled as though it were in the main source file. For example: S
  2456.       FOO.INC
  2457.       -------
  2458.       :subroutine
  2459.       PRINTLN "Hello!"
  2460.       RETURN
  2461.       FOO.PPS
  2462.       -------
  2463.       PRINTLN "Running FOO.PPS"
  2464.       GOSUB subroutine
  2465.       END ' This line is important!
  2466.       *$INCLUDE:FOO.INC
  2467. Note the use of END in FOO.PPS. It is important in this case to ensure that you don't accidentally run subroutine twice by just falling through to it. 
  2468.  ;$USEFUNCS
  2469. Allow you to specifiy that you want to use user-defined functions and  procedures. 
  2470. This makes the code more flexible by allowing you to put your main code (code between Begin and End) anywhere in your program (usefull if you have to incude some user-defined functions with an include directive at the  beginning of your code) 
  2471. THelpTopic
  2472. This word is not a PPL keyword... /
  2473. Press enter to jump to PPL Reference Index... 
  2474. THelpTopic
  2475.   @Xnn Color Codes
  2476. PCBoard defines some macros to change color if user has ANSI capabilities. 
  2477. If user doesn't support ANSI, PCB just skip those codes. It is a good way to colorize your screens and prompt because you don't have to check the ANSI flag, PCB deal with it automatically. 
  2478. Color codes are made of 4 bytes. the first byte is used to enter in macro mode. The second indicates that we want to pass a color code. Next byte is the background color and the last is the foreground color. 
  2479.  BackGround codes :
  2480.  0 - Black
  2481.  1 - Blue
  2482.  2 - Green
  2483.  3 - Cyan
  2484.  4 - Red
  2485.  5 - Magenta
  2486.  6 - Brown
  2487.  7 - LightGray
  2488.  8 - Black
  2489.  9 - Blinking foreground on Blue background
  2490.  A - Blinking foreground on Green background
  2491.  B - Blinking foreground on Cyan background
  2492.  C - Blinking foreground on Red background
  2493.  D - Blinking foreground on Magenta background
  2494.  E - Blinking foreground on Brown background
  2495.  F - Blinking foreground on LightGray background
  2496.  Foreground codes :
  2497.  0 - Black
  2498.  1 - Blue
  2499.  2 - Green
  2500.  3 - Cyan
  2501.  4 - Red
  2502.  5 - Magenta
  2503.  6 - Brown
  2504.  7 - LightGray
  2505.  8 - DarkGray
  2506.  9 - LightBlue
  2507.  A - LightGreen
  2508.  B - LightCyan
  2509.  C - LightRed
  2510.  D - LightMagenta
  2511.  E - Yellow
  2512.  F - White
  2513. THelpTopic
  2514.   GO ...
  2515.   See : Go
  2516. Sub Go
  2517. THelpTopic
  2518.   ... TO
  2519.   See : Go
  2520. To For...To...Next
  2521. THelpTopic
  2522.   PROCEDURE
  2523. [DECLARE] PROCEDURE proc( [TYPE var1 [VAR] ],...) z
  2524. The keyword PROCEDURE is used in conjonction with the keyword DECLARE in the declaration of a user-defined procedure... 
  2525. The optionnal VAR keyword tells PPL to copy the contents of the local variable back into the original variable when the procedure is finished processing. 
  2526. The compiler directive ";$USEFUNCS" may be used in order to allow your main code (code between BEGIN & END) to be located anywhere within your file... 
  2527. Example : 
  2528.  ;$USEFUNCS
  2529.  DECLARE PROCEDURE proc1(INTEGER i, STRING str, VAR INTEGER j)
  2530.  INTEGER int1,int2
  2531.  STRING s1
  2532.  BEGIN
  2533.  int1 = 1
  2534.  int2 = 2
  2535.  s1 = "HELLO"
  2536.  proc1(int1,s1,int2)
  2537.  PRINTLN "int1 =",int1
  2538.  PRINTLN "int2 =",int2
  2539.  PRINTLN "s1 =",s1
  2540.  PROCEDURE proc1(INTEGER i,STRING str, VAR INTEGER j)
  2541.         PRINTLN "I'm in proc1"
  2542.         LET i = 30
  2543.         LET j = 15
  2544.  ENDPROC
  2545.   See also : Function
  2546. THelpTopic
  2547.  FUNCTION
  2548. [DECLARE] FUNCTION func(TYPE var1, ...) TYPE z
  2549. The keyword PROCEDURE is used in conjonction with the keyword FUNCTION in the declaration of a user-defined function... 
  2550. The compiler directive ";$USEFUNCS" may be used in order to allow your main code (code between BEGIN & END) to be located anywhere within your file... r
  2551. The big difference between functions and procedures is that functions return a value. To assign the return value inside a function, simple use the name of the function just like a variable. You do not need to declare this variable, it is done for you. When the function is finished executing the value in the return variable will be made available as the return value. 
  2552. Note that function calls can take place anywhere inside of an expression as well as stand-alone statements. This can be useful in situations when the functions return value is not needed, but the functions side effects are. 
  2553. Example : 
  2554.  ;$USEFUNCS
  2555.  DECLARE FUNCTION Xto_theY(INTEGER x, INTEGER y) INTEGER
  2556.  DECLARE FUNCTION square(INTEGER x) INTEGER
  2557.  FUNCTION Xto_theY(INTEGER x, INTEGER y) INTEGER
  2558.    INTEGER i
  2559.      Xto_theY = x
  2560.      for i = 2 to y
  2561.        Xto_theY = Xto_theY * x
  2562.      next i
  2563.  ENDFUNC
  2564.  FUNCTION square(INTEGER x) INTEGER
  2565.    square = x * x
  2566.  ENDFUNC
  2567.  BEGIN
  2568.       PRINTLN "4 to the 3rd power = ",Xto_theY(4,3)
  2569.       PRINTLN "4 squared = ",square(4)
  2570.   See also : Procedure
  2571. THelpTopic
  2572.   DECLARE
  2573.   See : Function Procedure
  2574. THelpTopic
  2575.   SELECT CASE
  2576.  SELECT CASE var
  2577.         CASE const1 [, const2..const3 [, expr ] ]
  2578.         .
  2579.         .
  2580.         .
  2581.         DEFAULT (or CASE ELSE)
  2582.  END SELECT
  2583. The SELECT CASE construct allows you to organize multiple execution paths into a clean, easy to read format. X
  2584. Each CASE contains one or more expressions delimited by commas. Each CASE expression is compared to the SELECT CASE expression logically. If it is TRUE the body of the CASE is executed. The CASE body can contain as many statements as needed, including function calls. Note that ranges include the boundry values. eg 11..35 includes 11 and 35. 
  2585. The DEFAULT case will be executed when none of the other CASE expressions evaluate to TRUE. For BASIC programmers, the CASE ELSE is also valid instead of DEFAULT. 
  2586. Example : 
  2587.       INTEGER i
  2588.          LET i = 3
  2589.           SELECT CASE (i)
  2590.                 CASE 1
  2591.                        PRINTLN "i = 1"
  2592.                        proc1(i)
  2593.                 CASE 2,6,10
  2594.                        PRINTLN "i is 2,6 or 10"
  2595.                        proc2(i)
  2596.                 CASE 3
  2597.                        PRINTLN "i is 3"
  2598.                 CASE 11..35
  2599.                        PRINTLN "i is between 11 and 35"
  2600.                 CASE 50..60,64,78
  2601.                        PRINTLN "I is between 50 and 60 or 64 or 78
  2602.                 DEFAULT
  2603.                         PRINTLN "i is not a valid value"
  2604.            END SELECT
  2605. THelpTopic
  2606.   DBASE III FUNCTIONS & STATEMENTS
  2607. PPL provide a load of functions & statements to access DBase III files... 
  2608.  STATEMENTS
  2609.  DCREATE    channel,name,exclusive,fieldInfo ; create DBF file
  2610.  DOPEN      channel,name,exclusive           ; open DBF file
  2611.  DCLOSE     channel                          ; close DBF file
  2612.  DSETALIAS  channel,name                     ; set DBF alias
  2613.  DPACK      channel                          ; pack DBF file
  2614.  DLOCK      channel                          ; lock DBF file
  2615.  DLOCKF     channel                          ; lock DBF file (same as DLOCK)
  2616.  DLOCKR     channel,recno                    ; lock a record
  2617.  DLOCKG     channel,recnos,count             ; lock a group of records
  2618.  DUNLOCK    channel                          ; unlock any current locks
  2619.  DNCREATE   channel,name,expression          ; create NDX file
  2620.  DNOPEN     channel,name                     ; open NDX file
  2621.  DNCLOSE    channel,name                     ; close NDX file
  2622.  DNCLOSEALL channel                          ; close all NDX files
  2623.  DNEW       channel                          ; start a new record
  2624.  DADD       channel                          ; add the new record
  2625.  DAPPEND    channel                          ; append a blank record
  2626.  DTOP       channel                          ; go to top record
  2627.  DGO        channel,recno                    ; go to specific record
  2628.  DBOTTOM    channel                          ; go to bottom record
  2629.  DSKIP      channel,number                   ; skip +/- a number of records
  2630.  DBLANK     channel                          ; blank the record
  2631.  DDELETE    channel                          ; delete the record
  2632.  DRECALL    channel                          ; recall the record
  2633.  DTAG       channel,name                     ; select a tag
  2634.  DSEEK      channel,expression               ; string or double
  2635.  DFBLANK    channel,name                     ; blank a named field
  2636.  DGET       channel,name,var                 ; get a value from a named field
  2637.  DPUT       channel,name,expression          ; put a value to a named field
  2638.  DFCOPY     channel,name,channel,name        ; copy a field to a field
  2639.  DCLOSEALL                                   ; close all DBF files
  2640.  FUNCTIONS
  2641.  DRECCOUNT (channel)        (INTEGER)        ; return the number of records
  2642.  DRECNO    (channel)        (INTEGER)        ; return the current record number
  2643.  DBOF      (channel)        (BOOLEAN)        ; return the begin of file status
  2644.  DEOF      (channel)        (BOOLEAN)        ; return the end of file status
  2645.  DDELETED  (channel)        (BOOLEAN)        ; return the deleted flag
  2646.  DCHANGED  (channel)        (BOOLEAN)        ; return the changed flag
  2647.  DFIELDS   (channel)        (INTEGER)        ; return count of fields
  2648.  DNAME     (channel,number) (STRING)         ; return name of numbered field
  2649.  DTYPE     (channel,name)   (STRING)         ; return type of named field
  2650.  DLENGTH   (channel,name)   (INTEGER)        ; return length of named field
  2651.  DDECIMALS (channel,name)   (INTEGER)        ; return decimals of named field
  2652.  DSELECT   (alias)          (INTEGER)        ; returns channel assiciated with alias
  2653.  DSEEK     (channel,expression) (INTEGER)    ; returns error status ( 0|1 )
  2654.                                              ; or seek success (0 = Error
  2655.                                              ; 1 = success, 2 = following record
  2656.                                              ; 3 = end of file )
  2657.  DGETALIAS (channel)        (STRING)                 ; return the current alias
  2658.  DCLOSEALL                  (BOOLEAN) error status   ; close all DBF files
  2659.  DOPEN     (channel,name,exclusive)(BOOLEAN) error   ; open DBF file
  2660.  DCLOSE    (channel)        (BOOLEAN) error status   ; close DBF file
  2661.  DSETALIAS (channel,name)   (BOOLEAN) error status   ; set DBF alias
  2662.  DPACK     (channel)        (BOOLEAN) error status   ; pack DBF file
  2663.  DLOCK     (channel)        (BOOLEAN) error status   ; lock DBF file
  2664.  DLOCKR    (channel,recno)  (BOOLEAN) error status   ; lock a record
  2665.  DUNLOCK   (channel)        (BOOLEAN) error status   ; unlock any current locks
  2666.  DNOPEN    (channel,name)   (BOOLEAN) error status   ; open NDX file
  2667.  DNCLOSE   (channel,name)   (BOOLEAN) error status   ; close NDX file
  2668.  DNCLOSEALL(channel)        (BOOLEAN) error status   ; close all NDX files
  2669.  DNEW      (channel)        (BOOLEAN) error status   ; start a new record
  2670.  DADD      (channel)        (BOOLEAN) error status   ; add the new record
  2671.  DAPPEND   (channel)        (BOOLEAN) error status   ; append a blank record
  2672.  DTOP      (channel)        (BOOLEAN) error status   ; go to top record
  2673.  DGO       (channel,recno)  (BOOLEAN) error status   ; go to specific record
  2674.  DBOTTOM   (channel)        (BOOLEAN) error status   ; go to bottom record
  2675.  DSKIP     (channel,number) (BOOLEAN) error status   ; skip +/- a number of records
  2676.  DBLANK    (channel)        (BOOLEAN) error status   ; blank the record
  2677.  DDELETE   (channel)        (BOOLEAN) error status   ; delete the record
  2678.  DRECALL   (channel)        (BOOLEAN) error status   ; recall the record
  2679.  DTAG      (channel,name)   (BOOLEAN) error status   ; select a tag
  2680.  DFBLANK   (channel,name)   (BOOLEAN) error status   ; blank a named field
  2681.  DGET      (channel,name)   (STRING)                 ; get a value from a named field
  2682.  DPUT      (channel,name,expression)(BOOLEAN) error  ; put a value to a named field
  2683.  DFCOPY    (channel,name,channel,name)(BOOLEAN) error; copy a field to a field
  2684.  DERR      (channel)        (BOOLEAN)        ; return error flag for channel
  2685.  DERRMSG   (errcode)        (STRING)         ; returns last DBase error text.
  2686. CAUTION: DBase functions that return the error status actually return !ERROR. This is to provide a consistent way to express an error in an expression. For example: 
  2687.  if ( DERR (...)) println "Error!"       ;DERR  returns 1 or TRUE on an error.
  2688.  if (!DSEEK(...)) println "Seek failed!" ;DSEEK returns 0 or FALSE on an error.
  2689. NOTE: Where file names are used, file extensions are optional. Any extension you provide will be ignored. DBF and IDX are the default. 
  2690.  channel  :  Any value between 0 and 7
  2691.  name     :  Char string
  2692.  exclusive:  Integer (TRUE || FALSE)
  2693.  fieldinfo:  Character string with the following fields
  2694.              1- Field name
  2695.              2- Field Type
  2696.                  C = Character
  2697.                  N = Numeric
  2698.                  F = Floating Point
  2699.                  D = Date
  2700.                  L = Logical
  2701.                  M = Memo
  2702.              3- Field Length
  2703.              4- Decimal (number of digits to the right of the decimal)
  2704. EXAMPLE: 
  2705.  string finfo(3)
  2706.  let finfo(0) = "First,C,20,0"
  2707.  let finfo(1) = "Last,C,20,0"
  2708.  let finfo(2) = "Phone,C,15,0"
  2709. NOTE: multiple fields require an array of strings. 1 string for each field. @
  2710. expression : Character String with search criteria on a field. 
  2711. EXAMPLE: "
  2712.  string expr
  2713.  let expr = "First"
  2714.  recno,recnos,number,count : integers
  2715. THelpTopic
  2716.   DRIVESPACE ()
  2717. Usage: DRIVESPACE(drivespec) Return Val: Amount of divespace left of drive drivespec. 
  2718. Example: 
  2719.  integer left
  2720.  left = DRIVESPACE("c:\")
  2721.  println "There are ",tostring(left)," bytes on drive C."
  2722. drivespec must include at least a drive letter AND a colon. Backslash is optional. With directory specs it will work also. valid drivespecs are C: C:\ C:\PCB These will all return drivespace left on dirve C s
  2723. *NOTE On LANTASTIC this will return drivespace of the current physical drive even if it is mapped as a directory. 
  2724.   See also : FileInf Delete
  2725. THelpTopic
  2726.   SETLMR
  2727. SETLMR conf#,msg# :
  2728. Set the last read pointers for the specified conference. 
  2729. Example : 
  2730. Integer conf,msg 9
  2731. if(newuser == TRUE) then                  ; If new user 
  2732.         while(conf < HICONFNUM() ) DO     ; set all LMR's to
  2733.                 join conf                 ; HI_MSG - 10
  2734.                 SETLMR conf,HIMSGNUM()-10
  2735.                 INC conf
  2736.         endwhile
  2737. endif 
  2738. If conf# is greater than the number of actual confrences conf# will default to the highest conference number If msg# is greater than the highest message number in that conference, it will default to the highest message number in that conference. This could be used to set a new users mesg pointers to recent messages so they aren't replying to 3 years old messages. A useful feature would be to get the high conference number. 4
  2739.   See also : HiConfNum HiMsgNum ActMsgNum LoMsgNum
  2740. THelpTopic
  2741.   SETENV
  2742. SETENV env_var 
  2743. Set an environment variable 
  2744. Example: 
  2745.  string s
  2746.  let s = "stan=Stan"
  2747.  SETENV s
  2748.  if (GETENV("stan") = "Stan") then
  2749.  Println "Environment variable stan = Stan "
  2750.  endif
  2751. Used to set DOS environment variable. This can be used for PPE's to communicate with other PPE's. The environment variables set within PPL will NOT be available to DOORs.  Environment variables set within PPL will be cleared the next time PCBoard recycles through DOS. !
  2752.  See also : GetEnv, Shell, Call
  2753. THelpTopic
  2754.   FCLOSEALL
  2755. Closes all file channels 
  2756. Example: E
  2757.  fopen 1, "Autoexec.bat"
  2758.  fopen 2, "Config.sys"
  2759.  fcloseall
  2760.   See also : FOpen FClose FCreate FAppend FRewind FNext
  2761. THelpTopic
  2762.   FNEXT()
  2763. Returns an availble file channel. -1 when none are available. 
  2764. Example: 8
  2765.  println "The next available file channel is ",FNEXT()
  2766. FNEXT was created in order to better support code libraries made possible by functions and procedures. File channel numbers can now be determined at runtime. Y
  2767. CAUTION: Until you actually OPEN a file FNEXT will return the same value over and over. @
  2768. chan1 = FNEXT() chan2 = FNEXT()  WRONG! chan1 will equal chan2 )
  2769. another gotcha: FOPEN FNEXT(),blah blah F
  2770. There is no way to determine what channel was used to open the file! -
  2771. Here's an example of how it should be used: #
  2772. chan1 = FNEXT() FOPEN   chan1,... #
  2773. chan2 = FNEXT() FOPEN   chan2,... =
  2774.   See also : FOpen FClose FCreate FAppend FRewind FCloseAll
  2775. THelpTopic
  2776.   HICONFNUM()
  2777. Returns the highest conference number available on the board 
  2778. Example: H
  2779.  integer i
  2780.  println "The highest conference available is ",HICONFNUM()
  2781. If a conference is installed it will be counted, even if it is not being used. 1
  2782.   See also : SetLmr HiMsgNum ActMsgNum LoMsgNum
  2783. THelpTopic
  2784.   OUTBYTES()
  2785. Returns the number of bytes waiting in the modems output buffer Not available in local mode. 
  2786. Example: L
  2787.  integer i
  2788.  println "Bytes waiting in the modem output buffer ",OUTBYTES()
  2789.   See also : InBytes MGetByte SendModem MPrint MPrintLn MdmFlush
  2790. THelpTopic
  2791.   INBYTES()
  2792. Returns number of bytes waiting in the modem input buffer Not available in local mode. 
  2793. Example: @
  2794.  integer i
  2795.  Println "Bytes in modem input buffer = ",INBYTES()
  2796.   See also : OutBytes MGetByte SendModem MPrint MPrintLn MdmFlush
  2797. THelpTopic
  2798.   PCBMAC()
  2799. Returns a BIGSTR containing the expanded text of a PCB MACRO 
  2800. Example: }
  2801.  integer i,j, res
  2802.  j = PCBMAC("@Timelimit@")
  2803.  i = PCBMAC("@Timeused@")
  2804.  res = j-i
  2805.  println "You have ",res, " Minutes left"
  2806.  PCB MACROS not supported:
  2807.  @automore@ @beep@ @clreol@ @cls@ @delay@ @more@ @pause@ @poff@ @pon@ @pos@
  2808.  @qoff@ @qon@ @wait@ @who@ @x@
  2809. THelpTopic
  2810.   CRC32()
  2811. UNSIGNEDTYPE = CRC32(CRC_FILE,"C:\AUTOEXEC,BAT") 3
  2812.              = CRC32(CRC_STR,"Stan is super cool")
  2813. Returns an UNSIGNED value of the CRC of a file or string. 
  2814. Example: O
  2815.  Println "CRC on the file AUTOEXEC.BAT is", CRC32(CRC_FILE,"C:\AUTOEXEC.BAT")
  2816. The constants CRC_FILE and CRC_STR are the same as TRUE and FALSE. They were added to make it easier to see if a file or string was being processed. 
  2817. THelpTopic
  2818.   ACTMSGNUM()
  2819. Returns number of active messages in current conference 
  2820. Example: S
  2821.  integer i
  2822.  println "There are ",ACTMSGNUM()," messages in conference ",CURCONF()
  2823.   See also : Join HiConfNum LoMsgNum HiMsgNum
  2824. THelpTopic
  2825.   STACKLEFT()
  2826. Returns the number of bytes left on the *system* stack. 
  2827. Example: >
  2828.  println "There are ",STACKLEFT()," bytes left on the stack"
  2829.  ;recursive call support
  2830.  function stan(integer i,string str)
  2831.    if(stackleft() > STK_LIMIT) stan(i,"Debra")
  2832.  endfunc
  2833. This function was added to support nested and recursive function calls. Since function calls take a lot of stack space. As of now only about 26 nested or recursive calls can eat up the stack. This lets the programmer know when he/she is running out of stack space as to avoid a runtime error. Both recursion and nested function calls should check this value if more than just a few calls are to be executed. "
  2834.   See also : StackErr StackAbort
  2835. THelpTopic
  2836.   STACKERR()
  2837. Returns a boolean value which indicates a stack error has occured if TRUE. 
  2838. Example: L
  2839.  if (STACKERR()) then
  2840.      println "An error has occured "
  2841.      end
  2842.  endif
  2843. Because of the limited stack space for recursive function calls this function was created. It allows the programmer to determine if a stack error has occured while executing a PPE. This is in addition to the error message when the error occurs. The only way this will be useful is if the PPL programmer has told PPL not to abort on stack errors. PPL will *not* allow system memory to be corrupted when stack space has been exausted. It will disallow any more function calls when there is no system stack space left. *Note nested/recursive procedure calls are limited by heap space, not stack space. #
  2844.   See also : StackLeft StackAbort
  2845. THelpTopic
  2846.   STACKABORT
  2847. STACKABORT TRUE | FALSE 
  2848. Example: #
  2849.  STACKABORT TRUE ;Default is TRUE
  2850. This allows the programmer to tell the runtime module to try its best to continue executing after a stack error has occurred. If it is passed FALSE, it will abort execution after a stack error. If it is passed TRUE the PPE will continue to run. 
  2851. CAUTION! If you continue to execute after a stack error, program execution will be unpredictable. PPL will not allow system memory to be corrupted because of a stack error. !
  2852.   See also : StackLeft StackErr
  2853. THelpTopic
  2854.   DNEXT()
  2855. Returns an available dbase file channel. -1 when none are available. 
  2856. Example: >
  2857.  println "The next available dbase file channel is ",DNEXT()
  2858. DNEXT was created in order to better support code libraries made possible by functions and procedures. File channel numbers can now be determined at runtime. Y
  2859. CAUTION! Until you actually OPEN a file DNEXT will return the same value over and over. @
  2860. chan1 = DNEXT() chan2 = DNEXT()  WRONG! chan1 will equal chan2 #
  2861. another gotcha: FOPEN DNEXT(),... F
  2862. There is no way to determine what channel was used to open the file! -
  2863. Here's an example of how it should be used: #
  2864. chan1 = DNEXT() FOPEN   chan1,... #
  2865. chan2 = DNEXT() FOPEN   chan2,... 
  2866.   See also : DBase
  2867. functions
  2868. THelpTopic
  2869.   TODDATE (DATE date)
  2870. Converts any PPL type to DDATE type. 
  2871. Example: 
  2872.  DATE d1
  2873.  DDATE d2
  2874.  d2 = TODDATE(d1)
  2875. This is an explicit type conversion. Implicit type conversion is also valid as with all other PPL types. *
  2876.   See also : Date DDate
  2877. type MkDate
  2878. THelpTopic
  2879.   FREALTUSER
  2880. Since only one GETALTUSER can be active at one time, FREALTUSER can allow other processes which need to use GETALTUSER (such as the MESSAGE commend) to do so. 
  2881. Example: N
  2882.  string name
  2883.  GETALTUSER 20
  2884.  name = U_NAME()
  2885.  FREALTUSER
  2886.  message 1,name,...
  2887.   See also : GetAltUser GetUser PutAltUser PutUser
  2888. THelpTopic
  2889.   ACCOUNTING
  2890. Several functions and statements have been added to support PCBoard accounting features. Also, many system constants have been added to make using these funtions and statements easier for the PPL programmer. 
  2891. CONSTANTS 
  2892. There are three new functions which return accounting information. Each function will return a value based on a parameter passed to it. Several constants have been added to make accessing these values easier. The following list details these consts and what they are used for. !
  2893. for use with PCBACCOUNT() only! 
  2894.  val  const           Associated value
  2895.  -------------------------------------------------------------------
  2896.   0   NEWBALANCE      Credits Given to a new user account
  2897.   1   CHRG_CALL       Credits charged for a call
  2898.   2   CHRG_TIME       Credits charged for time used (in minutes)
  2899.   3   CHRG_PEAKTIME   Credits charged for peak time used
  2900.   4   CHRG_CHAT       Credits charged for chat session
  2901.   5   CHRG_MSGREAD    Credits charged for reading a message
  2902.   6   CHRG_MSGCAP     Credits charged for capturing a message
  2903.   7   CHRG_MSGWRITE   Credits charged for writing a message
  2904.   8   CHRG_MSGECHOED  Credits charged for writing an echoed message
  2905.   9   CHRG_MSGPRIVATE Credits charged for writing a private message
  2906.  10   CHRG_DOWNFILE   Credits charged for downloading a file
  2907.  11   CHRG_DOWNBYTES  Credits charged for downloading bytes
  2908.  12   PAY_UPFILE      Credits given   for uploading a file
  2909.  13   PAY_UPBYTES     Credits given   for uploading bytes
  2910.  14   WARN_LEVEL      Credit  threshold for low credit warning
  2911. The following are for use with PCBACCSTAT() only! 
  2912.  val    constant     Associated value
  2913.  -------------------------------------------------------------------
  2914.   0      ACC_STAT    Returns status of the "Enable Accounting"
  2915.                      switch in the PWRD file.  0=Accounting
  2916.                      disabled (N), 1=Tracking (T), and
  2917.                      2=Enabled (Y).
  2918.   1      ACC_TIME    The amount of ADDITIONAL units to charge
  2919.                      per minute while in the current
  2920.                      conference.
  2921.   2      ACC_MSGR    The amount to charge in ADDITION for each
  2922.                      message read in the current conference.
  2923.   3      ACC_MSGW    The amount to charge in ADDITION for each
  2924.                      message entered in the current conference.
  2925. The following are for use with ACCOUNT(), ACCOUNT and RECORDUSAGE only! 
  2926.  val constant       description                                example
  2927.  ----------------------------------------------------------------------
  2928.   0  START_BAL       Users starting balance.
  2929.   1  START_SESSION   Users starting balance for this session
  2930.   2  DEB_CALL        Debit for this call
  2931.   3  DEB_TIME        Debit for time on
  2932.   4  DEB_MSGREAD     Debit for reading message
  2933.   5  DEB_MSGCAP      Debit for capturing a message
  2934.   6  DEB_MSGWRITE    Debit for writing a message
  2935.   7  DEB_MSGECHOED   Debit for echoed message
  2936.   8  DEB_MSGPRIVATE  Debit for writing private message
  2937.   9  DEB_DOWNFILE    Debit for downloading a file
  2938.  10  DEB_DOWNBYTES   Debit for downloading bytes
  2939.  11  DEB_CHAT        Debit for chat
  2940.  12  DEB_TPU         Debit for TPU
  2941.  13  DEB_SPECIAL     Debit special
  2942.  14  CRED_UPFILE     Credit for uploading a file
  2943.  15  CRED_UPBYTES    Credit for uploading bytes
  2944.  16  CRED_SPECIAL    Credit special
  2945.  17  SEC_DROP        Security level to drop to at 0 credits
  2946. This group of constants can be used to access or modify user account information using the ACCOUNT() function, ACCOUNT statement and/or RECORDUSAGE. The ACCOUNT() function returns the current value and the ACCOUNT statement is used to modify a value. Record usage also modifies a value with more information stored in a usage file. "
  2947.   See also : Account RecordUsage
  2948. THelpTopic
  2949.   ACCOUNT(INTEGER field)
  2950.   ACCOUNT INTEGER field, INTEGER value
  2951. 1) the ACCOUNT() function V
  2952. Returns amount of credits charged for services corresponding to the field parameter. 
  2953. Example: A
  2954.  println "You have been charged ",ACCOUNT(DEB_CHAT)," for chat"
  2955. field is the field number to access (1-14) or using DEB_ constants c
  2956. See the Accounting section for a list of constants witch can be used with the ACCOUNT() function. 
  2957. The account function is used to retrieve account information from PCBoard. These are the constants which can be used with the ACCOUNT() function. 
  2958. 2) The ACCOUNT Statement 
  2959. field is a value between 0-14. Using system constants is reccomended. value is the amount of credits to add or subtract to field the field 
  2960. Example: 
  2961.  ACCOUNT DEB_CHAT,10
  2962. The ACCOUNT statement is used to modify accounting information for a user. This statement will simply modify a debit value whereas the RECORDUSAGE will do the same thing as well as record information in the accounting file. 
  2963. The valid constants for this statement are the same as those used for the ACCOUNT() Function. See the Accounting section for a list of those consts %
  2964.   See also : Accounting RecordUsage
  2965. THelpTopic
  2966.   RECORDUSAGE ...
  2967. Usage : RECORDUSAGE INTEGER field,STRING desc1,STRING desc2,DWORD unitcost,INTEGER value 
  2968. Example: ;
  2969.  RECORDUSAGE DEB_CHAT,"Debit for chat", "Using PPE",10,10
  2970. field is the field number to access (using DEB_... consts) descr1 is the descripttion of the charge descr2 is a subdescription of the charge unitcost is the cost per unit value is the number of units }
  2971. Recordusage will update debit values in PCBoard as well as record descriptions and other information in an accounting file. 
  2972. Valid values for the field parameter are 2-16. The constants corresponding with these values (DEB_???) could and should be used here. (see the Accounting section for a list of consts) 7
  2973.   See also : Accounting Account PCBAccount PcbAccStat
  2974. THelpTopic
  2975.   PCBACCOUNT(INTEGER field)
  2976. Returns what PCBoard will charge a user for a certain activity. These are values the SysOp assigns in PCBsetup when accounting is configures and enabled. 
  2977. Example: C
  2978.  println "You will be charged ",PCBACCOUNT(CHRG_CHAT)," for chat"
  2979. Valid values for the field paramter are 0-14. Use of the corresponding constants is encouraged. (see the Accounting section) 8
  2980.   See also : Accounting Account RecordUsage PcbAccStat
  2981. THelpTopic
  2982.   PCBACCSTAT(INTEGER field)
  2983. Returns value in status field 
  2984. Example: ;
  2985.  PRINTLN "Mutiplier for credits is ",PCBACCSTAT(ACC_STAT)
  2986. This function can and should be used in conjunction with the ACC_??? constants as the field parameter. Valid values for field are 0-3. (see the Accounting section) 9
  2987.   See also : Accounting Account RecordUsage RecordUsage
  2988. THelpTopic
  2989.   MESSAGE HEADER FIELD ACCESS CONSTANTS
  2990.     Field      Value hex    dec    Field Description
  2991.  -------------------------------------------------------------------
  2992.     HDR_ACTIVE       0x0E   14     Message active flag field
  2993.     HDR_BLOCKS       0x04    4     Number of 128 byte blocks in message
  2994.     HDR_DATE         0x05    5     Date message was written
  2995.     HDR_ECHO         0x0F   15     Echoed message flag
  2996.     HDR_FROM         0x0B   11     Who the message is from
  2997.     HDR_MSGNUM       0x02    2     Message number
  2998.     HDR_MSGREF       0x03    3     Reference message
  2999.     HDR_PWD          0x0D   13     Message password
  3000.     HDR_REPLY        0x0A   10     Message reply flag
  3001.     HDR_RPLYDATE     0x08    8     Reply message date
  3002.     HDR_RPLYTIME     0x09    9     Reply message time
  3003.     HDR_STATUS       0x01    1     Message status
  3004.     HDR_SUBJ         0x0C   12     Message subject
  3005.     HDR_TIME         0x06    6     Message time
  3006.     HDR_TO           0x07    7     Who the message is to.
  3007. These constants are for use with SCANMSGHDR(conf_num,start_msg,field,text) in the FIELD parameter. 
  3008.   See also : ScanMsgHdr
  3009. THelpTopic
  3010.   SCANMSGHDR(conf,start_msg,field,test)
  3011. Returns the first message number in the message base which matches the search criteria. 
  3012. Example: 7
  3013.  integer msgno
  3014.  msgno = SCANMSGHDR(0,1,HDR_TO,"Stan")
  3015. This function can be used to scan PCBoard message bases for certain information. All fields in the standard header can be searched. There are 15 fields in the standard header. Valid values for field are 1-15. See the list of constants related to this function. 0
  3016.   See also : MsgToFile Message
  3017. Header
  3018. Constats
  3019. THelpTopic
  3020.   MSGTOFILE conf,msg_no,filename
  3021. Writes a message into a file. 
  3022. Example: h
  3023.  ;Using SCANMSGHDR to search for a message
  3024.  MSGTOFILE 0,200,"d:\msg1.txt"
  3025.  DISPFILE "D:\msg1.txt",DEFS
  3026. This statement will take the given message and write it to a text file. The file's first 15 lines will contain standard header information. (One field per line) The headers are formatted to make parsing easier. The 16th line will state how many extended headers are present. The following line(s) will contain extended headers. (one per line) Finally, after the extended headers, will be a line containing "Message body:". Everything after that is the body of the message. 3
  3027.   See also : ScanMsgHdr, DispFile, HDR_...
  3028. Consts
  3029. THelpTopic
  3030.   QWKLIMITS field,limit
  3031.   QWKLIMITS(field)
  3032. 1) The QWKLIMITS Statement z
  3033. This statement allows the PPL programmer to modify a users QWK limits. Four fields can be modified with their statement. O
  3034. Important note. You *must* use GET USER AND PUTUSER with these QWK functions. 
  3035. Example: *
  3036.  GETUSER
  3037.  QWKLIMITS MAXMSGS,500
  3038.  PUTUSER
  3039. - Max Messages: Maximum messages allowed in a qwk packet 
  3040.                 * Note: If you specify a number higher than that contained
  3041.                         in PCBSETUP the values in PCBSETUP will be used.
  3042. - Max Messages per Conference: Maximum messages allowed in a qwk packet per conference. 
  3043.                  * Note: If you specify a number higher than that contained
  3044.                          in PCBSETUP the values in PCBSETUP will be used.
  3045. - Personal Attach Limit: Maximum number of bytes in attached files for the user. P
  3046. - Public Attach Limit: Maximum number of bytes in attached files for the user. ?
  3047. Four constants have been defined to identify the FIELD value. 
  3048.  Constant        Value     Field
  3049.  MAXMSGS         0         Max messages per qwk packet
  3050.  CMAXMSGS        1         Max Messages per conference
  3051.  ATTACH_LIM_U    2         Personal attach bytes limit
  3052.  ATTACH_LIM_P    3         Public attach bytes limit
  3053. 2) The QWKLIMITS() function 
  3054. This functions returns the values contained in the users QWK configuration. The same constants used in the QWKLIMITS statements can be used with the field parameter. 
  3055. Example: '
  3056.  GETUSER
  3057.  PRINTLN QWKLIMITS(MAXMSGS)
  3058. THelpTopic
  3059.   FINDFIRST(filespec)
  3060. Find the first occurence of filespec in a directory. Used in conjunction with FindNext to get a directory listing. 
  3061. THelpTopic
  3062.   FINDNEXT()
  3063. Find the next occurence of filespec (used with FindFirst) in a directory. 
  3064. THelpTopic
  3065.   COMMAND ViaCmdLst, CommandLine
  3066. Process a command as if it were typed on the prompt. 
  3067. ViaCmdLst : A boolean value indcating whether or not to try to find the command in CMD.LST. If TRUE and the command is not in CMD.LST, it will try the standard commands automatically, failing if the command does not exist. ]
  3068. CommandLine : A string value with the command and parameters to execute. (like "R A Y O S") 
  3069. NOTES!!! Not all portions of PCBoard are re-entrant. For example, you should not try to have two message editor processes active at the same time (in other words, you shouldn't launch the message editor from within a MNU and then launch a PPE from a shifted function key that tries to enter another message). So you'll need to be carefull about *nested* COMMAND (or equivalent) calls. But sequential processing should not be a problem at all. 
  3070. If it is determined at some point in the future that allowing this flexibility causes more problems than it solves, the COMMAND statement will be scaled back to ensure that attempts are not made to re-enter code. So use it well and wisely! 
  3071. THelpIndex:
  3072. ]limits. Four fields can be modified with their statement. O
  3073. Important note. You *must* use GET USER AND PUTUSER with these QWK functions. 
  3074. Example: *
  3075.  GETUSER
  3076.  QWKLIMITS MAXMSGS,500
  3077.  PUTUSER
  3078. - Max Messages: Maximum messages allowed in a qwk packet 
  3079.                 * Note: If you specify a number higher than that contained
  3080.                         in PCBSETUP the values in PCBSETUP will be used.
  3081. - Max Messages per Conference: Maximum messages allowed in a qwk packet per conference. 
  3082.                  * Note: If you specify a number higher than that contained
  3083.                          in PCBSETUP the values in PCBSETUP will be used.
  3084. - Personal Attach Limit: Maximum number of bytes in attached files for the user. P
  3085. - Public Attach Limit: Maximum number of bytes in attached files for the user. ?
  3086. Four constants have been defined to identify the FIELD value. 
  3087.  Constant        Value     Field
  3088.  MAXMSGS         0         Max messages per qwk packet
  3089.  CMAXMSGS        1         Max Messages per conference
  3090.  ATTACH_LIM_U    2         Personal attach bytes limit
  3091.  ATTACH_LIM_P    3         Public attach bytes limit
  3092. 2) The QWKLIMITS() function 
  3093. This functions returns the values contained in the users QWK configuration. The same constants used in the QWKLIMITS statements can be used with the field parameter. 
  3094. Example: '
  3095.  GETUSER
  3096.  PRINTLN QWKLIMITS(MAXMSGS)
  3097. THelpTopic
  3098.   FINDFIRST(filespec)
  3099. Find the first occurence of filespec in a directory. Used in conjunction with FindNext to get a directory listing. 
  3100. THelpTopic
  3101.   FINDNEXT()
  3102. Find the next occurence of filespec (used with FindFirst) in a directory. 
  3103. THelpTopic
  3104.   COMMAND ViaCmdLst, CommandLine
  3105. Process a command as if it were typed on the prompt. 
  3106. ViaCmdLst : A boolean value indcating whether or not to try to find the command in CMD.LST. If TRUE and the command is not in CMD.LST, it will try the standard commands automatically, failing if the command does not exist. ]
  3107. CommandLine : A string value with the command and parameters to execute. (like "R A Y O S") 
  3108. NOTES!!! Not all portions of PCBoard are re-entrant. For example, you should not try to have two message editor processes active at the same time (in other words, you shouldn't launch the message editor from within a MNU and then launch a PPE from a shifted function key that tries to enter another message). So you'll need to be carefull about *nested* COMMAND (or equivalent) calls. But sequential processing should not be a problem at all. 
  3109. If it is determined at some point in the future that allowing this flexibility causes more problems than it solves, the COMMAND statement will be scaled back to ensure that attempts are not made to re-enter code. So use it well and wisely! 
  3110. THelpIndex
  3111.